2011-09-28 25 views
0

我有一个布局,main.xml。当你点击按钮describeButton时,它会打开一个名为checklist.xml的新的theme.dialog布局。在checklist.xml上,给用户一系列可用于描述图片的复选框。在他们检查尽可能多的复选框后,他们可以点击okButton返回到main.xml布局。使用主题对话框布局和XML字符串

因此,这里是我的问题:

  • 如何采取用户选择的复选框,打开选择成字符串,并将其存储作为strings.xml文件中的字符串?

  • 如何编码okButtonchecklist.xml关闭布局,反过来会将用户返回到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 
      } 
     }); 
    } 
} 

回答

1

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

实现我认为你正在尝试做的一种方法是将侦听器附加到复选框,然后跟踪用户何时检查或取消检查框。以下是一个对话框示例,其中包含Android Docs for Dialogs的单选按钮。通过使用builder.setMultiChoiceItems而不是builder.setSingleChoiceItems转换为复选框应该非常简单。其实这里是一个link to the multiChoiceItems method doc

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

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

+0

是的,我的意思是'res/values/strings.xml'。哦,我不知道你在执行后不能修改XML。用上面提供的代码 - 存储的字符串在哪里?另外,用户可以在示例中选择多种颜色吗?他们是否可以取消选择一种颜色,并将结果从输出字符串中删除? – Mxyk

+0

@MikeGates看到我最近关于MultiChoice vs SingleChoice的更新 – slayton

+0

太棒了!谢谢!这回答了我的第一个问题。你有第二个问题的解决方案(我会认为它会很简单)? – Mxyk