1

我试图在单击AlertDialoga 时显示一条消息SwitchPreference。我试图使用this,但出现错误:构造函数 AlertDialog.Builder(Settings) is undefined。所以我使用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 回答