Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
Android 使用主题对话框布局和XML字符串_Android_Xml_String_Layout_Themes - Fatal编程技术网

Android 使用主题对话框布局和XML字符串

Android 使用主题对话框布局和XML字符串,android,xml,string,layout,themes,Android,Xml,String,Layout,Themes,我有一个布局,main.xml。单击按钮descripebutton,将打开一个名为checklist.xml的新主题对话框布局。在checklist.xml上,用户可以使用一系列复选框来描述图片。在他们选中尽可能多的复选框后,他们可以单击ok按钮返回到main.xml布局 下面是我的问题: 如何选取用户选择的复选框,将选择转换为字符串,并将其作为字符串存储在strings.xml文件中 如何对checklist.xml上的ok按钮进行编码,以关闭布局,从而将用户返回到main.xml 谢谢

我有一个布局,
main.xml
。单击按钮
descripebutton
,将打开一个名为
checklist.xml
的新主题对话框布局。在
checklist.xml
上,用户可以使用一系列复选框来描述图片。在他们选中尽可能多的复选框后,他们可以单击
ok按钮
返回到
main.xml
布局

下面是我的问题:

  • 如何选取用户选择的复选框,将选择转换为字符串,并将其作为字符串存储在
    strings.xml
    文件中

  • 如何对
    checklist.xml
    上的
    ok按钮进行编码,以关闭布局,从而将用户返回到
    main.xml

谢谢你的帮助

编辑
下面是我目前使用的代码:

public class Descriptor extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.checklist);

        final CheckBox checkBox1 = (CheckBox) findViewById(R.id.checkBox1);



        Button selOK = (Button) findViewById(R.id.selectOK);
        selOK.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                 if (checkBox1.isChecked()) {
                     // add a string to an existing string in strings.xml
                 }
                 // repeat this if statement for all checkboxes

                 // execute something to close this layout
            }
        });
    }
}

你说的是
res/values/strings.xml
?编译APK后,不能更改XML文件。在编译期间,XML文件用于生成一个R.java文件,该文件是XML文件的java实现。这些文件是您无法更改或更改的实际java源代码

实现我认为您正在尝试的一种方法是将侦听器附加到复选框,然后跟踪用户何时选中或取消选中复选框。下面是一个对话框示例,其中包含来自的单选按钮。使用
builder.setMultiChoiceItems
而不是
builder.setSingleChoiceItems
转换为复选框应该非常简单。事实上,这里有一个例子


关于第二个问题,OK按钮可以关闭对话框。在主活动中,您可以为要显示的每个字符串设置一个布尔值数组。然后,在您的应用程序中,
onClick
方法可以根据选中的复选框更改各个布尔值。然后当对话框关闭时,您可以检查布尔数组,查看用户选中了哪些复选框。

是的,我的意思是
res/values/strings.xml
。哦,我不知道执行后不能修改XML。使用上面提供的代码-字符串存储在哪里?此外,在您的示例中,用户可以选择多种颜色吗?他们是否可以取消选择颜色,从而将其从输出字符串中删除?@MikeGates查看我最近关于MultiChoice vs SingleChoice的更新。这太棒了!谢谢这回答了我的第一个问题。你对我的第二个问题有什么解决办法吗(我想这很简单)?好的,谢谢。我试试这个。如果所有其他操作都失败,您知道如何关闭布局,以防我最终使用布局而不是AlertDialog?布局是指活动吗?您可以通过调用finish()来关闭活动
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();