Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 保持警报对话框选项_Java_Android_Android Alertdialog - Fatal编程技术网

Java 保持警报对话框选项

Java 保持警报对话框选项,java,android,android-alertdialog,Java,Android,Android Alertdialog,我正在创建一个警报对话框。下面是我正在使用的代码片段: final CharSequence[] items = {"Red", "Green", "Blue"}; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Pick a color"); builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickList

我正在创建一个
警报对话框
。下面是我正在使用的代码片段:

final CharSequence[] items = {"Red", "Green", "Blue"};

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a color");
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int item) {
        Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
    }
});
AlertDialog alert = builder.create();
alert.show();
这很好,但我还没有弄清楚如何将选择选项保存到某个位置,以便下次打开警报对话框时,显示先前选择的选项。我不需要这个值在应用程序重新启动时保持不变,只要应用程序在后台并且没有完全被丢弃

作为Android开发新手,我发现这很难实现。

使用以下代码:

private static final String SELECTED_ITEM = "SelectedItem";
private SharedPreferences sharedPreference;
private Editor sharedPrefEditor;

private void showAlert() {
    final CharSequence[] items = {"Red", "Green", "Blue"};

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Pick a color");               
    builder.setSingleChoiceItems(items, getSelectedItem(), new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {
            saveSelectedItem(item);
            Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
        }       
    });
    AlertDialog alert = builder.create();
    alert.show();

}

private int getSelectedItem() {
    if (sharedPreference == null) {
        sharedPreference = PreferenceManager
                .getDefaultSharedPreferences(this);
    }
    return sharedPreference.getInt(SELECTED_ITEM, -1);
}

private void saveSelectedItem(int item) {
    if (sharedPreference == null) {
        sharedPreference = PreferenceManager
                .getDefaultSharedPreferences(this);
    }
    sharedPrefEditor = sharedPreference.edit();
    sharedPrefEditor.putInt(SELECTED_ITEM, item);
    sharedPrefEditor.commit();
}
第一次,将不选择任何内容。从第二次开始,默认情况下将选择先前选择的项目。

使用以下代码:

private static final String SELECTED_ITEM = "SelectedItem";
private SharedPreferences sharedPreference;
private Editor sharedPrefEditor;

private void showAlert() {
    final CharSequence[] items = {"Red", "Green", "Blue"};

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Pick a color");               
    builder.setSingleChoiceItems(items, getSelectedItem(), new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {
            saveSelectedItem(item);
            Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
        }       
    });
    AlertDialog alert = builder.create();
    alert.show();

}

private int getSelectedItem() {
    if (sharedPreference == null) {
        sharedPreference = PreferenceManager
                .getDefaultSharedPreferences(this);
    }
    return sharedPreference.getInt(SELECTED_ITEM, -1);
}

private void saveSelectedItem(int item) {
    if (sharedPreference == null) {
        sharedPreference = PreferenceManager
                .getDefaultSharedPreferences(this);
    }
    sharedPrefEditor = sharedPreference.edit();
    sharedPrefEditor.putInt(SELECTED_ITEM, item);
    sharedPrefEditor.commit();
}

第一次,将不选择任何内容。从第二次开始,默认情况下将选择先前选择的项目。

这是一个简单的基本问题。这与android没有什么特别的关系。基本上,您只需像保存任何其他变量一样保存该值……在SharedReference中保存一些标志值,并在应用程序销毁/重新启动时清除该首选项。Hi JoaxTraex。你是对的。我没有对实际保存值的部分感到困惑,主要是因为我不知道下次显示对话框时如何设置正确的选项。我忽略了
setSingleChoiceItems
允许您指定预选选项的事实。我读过的关于构建
AlertDialog
的大多数示例都显示了对
setSingleChoiceItems
的调用为
-1
。我的片段就是我的意思的一个例子。不过,我应该更彻底地阅读这些文件-|@JoxTraex问题是文档中有这样一句话:“尽管传统列表和带有单选按钮的列表都提供了“单选”操作,但您应该使用setSingleChoiceItems()如果您想保留用户的选择。也就是说,如果以后再次打开对话框应该表明用户当前的选择是什么,那么您可以创建一个带有单选按钮的列表“这是一个简单的基本问题。这与android没有什么特别的关系。基本上,您只需像保存任何其他变量一样保存该值……在SharedReference中保存一些标志值,并在应用程序销毁/重新启动时清除该首选项。Hi JoaxTraex。你是对的。我没有对实际保存值的部分感到困惑,主要是因为我不知道下次显示对话框时如何设置正确的选项。我忽略了
setSingleChoiceItems
允许您指定预选选项的事实。我读过的关于构建
AlertDialog
的大多数示例都显示了对
setSingleChoiceItems
的调用为
-1
。我的片段就是我的意思的一个例子。不过,我应该更彻底地阅读这些文件-|@JoxTraex问题是文档中有这样一句话:“尽管传统列表和带有单选按钮的列表都提供了“单选”操作,但您应该使用setSingleChoiceItems()如果要保留用户的选择。也就是说,如果以后再次打开对话框时应指明用户当前的选择,则可以创建一个带有单选按钮的列表“