1

aがクリックさAlertDialogれたときにメッセージを表示しようとしています。SwitchPreferenceを使用しようとしましthisたが、エラーが発生しました。コンストラクターAlertDialog.Builder(Settings)が未定義です。そこで使用getActivity()しましたが、この方法では何も表示されません。

また、プリファレンスの選択とボックスのチェックの選択の間でさまざまなアクションを実行する方法を知っている人はいますか。いくつかの設定で設定テキストをクリックすると説明が表示されるので、小さなボックスをクリックして実際に有効/無効にする方法を知っています。

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

1 に答える 1

1

の構築が終了するAlertDialogと、最後の呼び出しはAlertDialog.Buidler.show()ではなくになりAlertDialog.Builder.create()ます。ただし、 を呼び出すとcreate()、後で を使用できますDialog.show()

別の注意として、Logデバッグではなく、デバッグに使用することをお勧めしますSystem.out

于 2013-03-04T00:23:45.297 に答える