2013-03-03 60 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