2013-03-03 61 views
0

我试图在单击SwitchPreference时显示AlertDialog消息。我试图使用this,但我得到一个错误:构造函数AlertDialog.Builder(设置)未定义。所以我用getActivity(),但是这个方法没有显示任何东西。PreferenceFragment:在onSharedPreferenceChanged中启动AlertDialog()

也没有人知道如何做选择偏好和选择勾选框不同的行动。你知道在某些设置中你可以点击偏好文本,它会给你一个描述,然后你必须点击小方框来实际启用/禁用。

public class Settings extends PreferenceFragment implements OnSharedPreferenceChangeListener{ 

    Bundle savedInstanceState; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.settings); 

     this.savedInstanceState = savedInstanceState; 
    } 

    @Override 
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 
     if (key.equals("this")) { 
      final SwitchPreference sp = (SwitchPreference) getPreferenceScreen().findPreference(key); 
      if (sp.isChecked()) { 
       System.out.println("enabled"); 
      } else { 
       AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
       builder.setMessage("blah...") 
         .setTitle("Title") 
         .setPositiveButton("proceed", new DialogInterface.OnClickListener() { 

          public void onClick(DialogInterface dialog, int id) { 
           System.out.println("positive"); 
          } 
         }) 
         .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

          public void onClick(DialogInterface dialog, int id) { 
           sp.setChecked(true); 
           System.out.println("cancled"); 
          } 
         }) 
         .create(); 
      } 
     } 
    } 

回答

1

当您完成构建AlertDialog,最后调用应该是AlertDialog.Buidler.show(),不AlertDialog.Builder.create()。但如果您拨打create(),稍后可以使用Dialog.show()

另一个说明,你可能想用Log来调试,而不是System.out

+1

您仍然可以使用'System.out'进行调试,它会显示在Info的类别下。 – 2013-03-04 00:32:04

+0

@ A - C谢谢,我不知道。 – 2013-03-04 00:32:56