如何从首选项屏幕打开AlertDialog?

问题描述:

我正在开发应用程序在android 我想显示AlertDialog,如果用户选中首选项屏幕的复选框首选项。 所以我怎么能做到..?如何从首选项屏幕打开AlertDialog?

+0

如果你让我们知道你使用的是什么技术和平台,这将有很大的帮助。请务必提供尽可能多的背景信息。 – 2011-03-28 09:28:02

+1

它有一个Android标记... – 2011-03-28 09:38:36

+0

可能的重复[如何从首选项屏幕打开AlertDialog?](http://*.com/questions/5457944/how-to-open-alertdialog-from-preference-screen) – 2011-04-02 17:19:24

覆盖onSharedPreferenceChangedPreferenceActivity类:

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

@Dharmendra更具体的什么“不工作”。 – GrAnd 2011-03-28 11:55:28

试试这个...

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(); 

     } 


} 
+2

感谢它正在工作@vaibhav – Dharmendra 2011-04-19 07:28:10

+1

@Dharmendra实际上,这需要一个return语句,并且需要添加下面方法的主要部分以涵盖“未实现的方法” – LoungeKatt 2012-07-30 16:56:53

+0

我曾经沿着这条路线投了票,但回来了到它..我有问题的方法onPreferenceTreeClick()没有得到调用。我发现这个职位的当前解决方案,帮助我得到这个逻辑工作http://*.com/a/12325780/2162226 – gnB 2015-05-06 19:35:23

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(); 
} 

这就是全部。