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