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

运行结果:

 

 

转载于:https://www.cnblogs.com/MMLoveMeMM/articles/3343142.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值