2013-03-03 2 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을 사용하여 디버깅 할 수 있습니다.

+1

여전히'System.out'을 사용하여 디버깅 할 수 있습니다.'Info' 카테고리 아래에 나타납니다. –

+0

@ A - C 고마워, 나는 그걸 몰랐다. –

관련 문제