如何从偏好设置屏幕打开AlertDialog?

15

我正在开发Android应用程序,如果用户从偏好设置屏幕中选择checkboxpreference,则希望显示AlertDialog。那么我该如何做呢?


1
如果您告诉我们您正在使用的技术和平台,那将会非常有帮助。请尽可能提供更多的上下文信息。 - Iain Ballard
1
它有一个Android标签... - Zsombor Erdődy-Nagy
可能是重复的问题:如何从首选项屏幕打开AlertDialog? - Roman Nurik
3个回答

16

尝试这个...

public class MyPreferences extends PreferenceActivity implements OnSharedPreferenceChangeListener {

      public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
                final Preference preference) {

         if(preference.equals("MyCheckboxPreferenceKey")) {

             AlertDialog.Builder builder = new AlertDialog.Builder(this);

         builder.setMessage("Your Message");

         builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

           public void onClick(DialogInterface dialog, int id) {

             //action on dialog close
           }

         });

         builder.show();

      }


}

1
@Dharmendra 实际上,这需要一个return语句,并且需要在下面的主要方法部分中添加以覆盖"未实现的方法"。 - Abandoned Cart
我在一路上已经点赞了这个,但回来看时...我遇到了一个问题,即onPreferenceTreeClick()方法没有被调用。我找到了这篇帖子,它提供了当前解决方案,帮助我让这个逻辑工作起来:https://dev59.com/dV3Ua4cB1Zd3GeqP_U9G#12325780 - Gene Bo

1

在你的PreferenceActivity类中重写onSharedPreferenceChanged方法:

public class MyPreferences extends PreferenceActivity implements OnSharedPreferenceChangeListener {
    ...
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        if (key.equals("MyCheckboxPreferenceKey")) {
            //Show your AlertDialog here!
        }
    }

0
public class MyPreferences extends PreferenceActivity{
 ...
//getting current context for builder
AlertDialog.Builder build = new AlertDialog.Builder(this);
//setting some title text
build.setTitle("SomeTitle");
//setting radiobuttons list
build.setSingleChoiceItems(new String[]{"One", "Two"}, 0, new OnClickListener() {                               

            @Override
            public void onClick(DialogInterface dialog, int which) {
                //Some behavior here    
            }
        });
        build.setNegativeButton("Cancel", new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                //Might be empty
            }
        });
                    //creating dialog and showing
        AlertDialog dialog = build.create();
        dialog.show();
}

就这些了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接