DialogPreference 的使用方法

看到网上DialogPreference的用法,让我很心痛...

Demo :

主程序如下:

package com.example.androiddialogperencetest;

import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.app.Activity;
import android.content.SharedPreferences;
import android.view.Menu;

public class MainActivity extends PreferenceActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        this.addPreferencesFromResource(R.xml.prefs_dialog);
    }

    @Override
    public void onPause() {
        SharedPreferences prefs = android.preference.PreferenceManager.
            getDefaultSharedPreferences(getBaseContext());
        if(prefs.getBoolean(
            getResources().getString(R.string.prefKeyResetQuests), false)) {
            // apply reset, and then set the pref-value back to false
        }
    }
}
View Code

DialogPreference是个抽象的,不能直接使用,需要重写:

package com.example.androiddialogperencetest;

import android.content.Context;
import android.preference.DialogPreference;
import android.util.AttributeSet;

public class MyDialogShow extends DialogPreference {

    public MyDialogShow(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
        //super.setDialogLayoutResource(R.xml.prefs_dialog);
        //super.setDialogIcon(R.drawable.ic);
    }

    public MyDialogShow(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
        //super.setDialogLayoutResource(R.xml.prefs_dialog);
        //super.setDialogIcon(R.drawable.ic);
    }

     @Override
        protected void onDialogClosed(boolean positiveResult) {
            super.onDialogClosed(positiveResult);
            persistBoolean(positiveResult);
        }
}
View Code

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">AndroidDialogPerenceTest</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="prefKeyResetQuests">resetQuests</string> 
    
</resources>
View Code

prefs_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <com.example.androiddialogperencetest.MyDialogShow
            android:key="@string/prefKeyResetQuests"
            android:dialogIcon="@android:drawable/ic_dialog_alert"
            android:title="Reset Quests"
            android:summary="Reset all quest-progress."
            android:dialogMessage="Are you sure you wish to reset your quest progress? This action cannot be undone!"
            android:positiveButtonText="Clear Quests"
            android:negativeButtonText="Cancel"/>

</PreferenceScreen>
View Code

运行结果:

 

 

posted @ 2013-09-27 17:32  MMLoveMeMM  阅读(2961)  评论(0编辑  收藏  举报