⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mypreference.java

📁 Android Source Code. An gallary program.
💻 JAVA
字号:
/* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.example.android.apis.app;import com.example.android.apis.R;import android.content.Context;import android.content.res.TypedArray;import android.os.Parcel;import android.os.Parcelable;import android.preference.Preference;import android.util.AttributeSet;import android.view.View;import android.widget.TextView;/** * This is an example of a custom preference type. The preference counts the * number of clicks it has received and stores/retrieves it from the storage. */public class MyPreference extends Preference {    private int mClickCounter;        // This is the constructor called by the inflater    public MyPreference(Context context, AttributeSet attrs) {        super(context, attrs);                setWidgetLayoutResource(R.layout.preference_widget_mypreference);            }    @Override    protected void onBindView(View view) {        super.onBindView(view);                // Set our custom views inside the layout        final TextView myTextView = (TextView) view.findViewById(R.id.mypreference_widget);        if (myTextView != null) {            myTextView.setText(String.valueOf(mClickCounter));        }    }    @Override    protected void onClick() {        int newValue = mClickCounter + 1;        // Give the client a chance to ignore this change if they deem it        // invalid        if (!callChangeListener(newValue)) {            // They don't want the value to be set            return;        }                // Increment counter        mClickCounter = newValue;                // Save to persistent storage (this method will make sure this        // preference should be persistent, along with other useful checks)        persistInt(mClickCounter);                // Data has changed, notify so UI can be refreshed!        notifyChanged();    }    @Override    protected Object onGetDefaultValue(TypedArray a, int index) {        // This preference type's value type is Integer, so we read the default        // value from the attributes as an Integer.        return a.getInteger(index, 0);    }    @Override    protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {        if (restoreValue) {            // Restore state            mClickCounter = getPersistedInt(mClickCounter);        } else {            // Set state            int value = (Integer) defaultValue;            mClickCounter = value;            persistInt(value);        }    }    @Override    protected Parcelable onSaveInstanceState() {        /*         * Suppose a client uses this preference type without persisting. We         * must save the instance state so it is able to, for example, survive         * orientation changes.         */                final Parcelable superState = super.onSaveInstanceState();        if (isPersistent()) {            // No need to save instance state since it's persistent            return superState;        }        // Save the instance state        final SavedState myState = new SavedState(superState);        myState.clickCounter = mClickCounter;        return myState;    }    @Override    protected void onRestoreInstanceState(Parcelable state) {        if (!state.getClass().equals(SavedState.class)) {            // Didn't save state for us in onSaveInstanceState            super.onRestoreInstanceState(state);            return;        }             // Restore the instance state        SavedState myState = (SavedState) state;        super.onRestoreInstanceState(myState.getSuperState());        mClickCounter = myState.clickCounter;        notifyChanged();    }        /**     * SavedState, a subclass of {@link BaseSavedState}, will store the state     * of MyPreference, a subclass of Preference.     * <p>     * It is important to always call through to super methods.     */    private static class SavedState extends BaseSavedState {        int clickCounter;                public SavedState(Parcel source) {            super(source);                        // Restore the click counter            clickCounter = source.readInt();        }        @Override        public void writeToParcel(Parcel dest, int flags) {            super.writeToParcel(dest, flags);                        // Save the click counter            dest.writeInt(clickCounter);        }        public SavedState(Parcelable superState) {            super(superState);        }        public static final Parcelable.Creator<SavedState> CREATOR =                new Parcelable.Creator<SavedState>() {            public SavedState createFromParcel(Parcel in) {                return new SavedState(in);            }            public SavedState[] newArray(int size) {                return new SavedState[size];            }        };    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -