将动态生成的CheckBox值传递给另一个Activity只返回Null?

时间:2017-09-28 03:01:36

标签: android android-activity checkbox gettext

如果我以编程方式创建复选框,如下所示:

private Fruits fruits = new Fruits();

final String color = ...  //user input from another control
final List<String> listFruits = fruits.getFruits(color);
final LinearLayout ll = (LinearLayout) findViewById(R.id.ll);

...

for (int i = 0; i < listFruits.size(); i++)
{
   final CheckBox chkFruits = new CheckBox(Main_Activity.this);
   chkFruits.setText(listFoods.get[i]);

   ll.addView(chkFruits);

   //insert code here on how to pass data of checked checkboxes to my next Activity_2
}

我的水果课如下:

public class Fruits {
   List<string> getFruits(String color) {
      List<String fruits = new ArrayList<String>();

      if (color.equals="red"){
         fruits.add("Apple");
         fruits.add("Strawberry");
      }
      else if (color.equals="yellow"){
         fruits.add("Banana");
         fruits.add("Pineapple");
      }

      return fruits;
   }
}

如何检查用户已检查哪些生成的复选框,然后传递它的信息(即setText(listFoods.get[0]将提供&#34; Apple&#34; if color="red")到我的下一个Activity_2?

我尝试使用Intent:

final String[] passThis = new String[1];
Button btn = (Button) findViewById(R.id.btn);

...

btn.setOnClickListener(new View.OnClickListener(){
...
Intent intent = new Intent (getBaseContext(), Activity_2.class);
intent.putExtra("checkedFruits", passThis[0]);
startActvity(intent);

但它返回 NULL 。如何将生成的复选框的文本/值导入我的下一个Activity_2?

编辑:如何将检查的CheckBox中的任何内容推送到我的passThis[]数组中,以便将它们传递到下一个Activity?

1 个答案:

答案 0 :(得分:0)

创建已选中复选框的文本列表,需要在每个复选框上添加clickListener。尝试这样的事情:

   List checked<String> = new ArrayList()// stores checked checkboxes text


   for (int i = 0; i < listFruits.size(); i++)
   {
 final CheckBox chkFruits = new CheckBox(Main_Activity.this);
  chkFruits.setText(listFoods.get(i));
  chkFruits.setTag(i); // to identify checkboxes
  //add click listener to your checkboxes
  chkFruits.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            CheckBox checkbox=(CheckBox)v;
            if(checkbox.isChecked())
            {
                int pos=(int)checkbox.getTag();
                checkbox.setChecked(false);
                checked.remove(pos);

            }else
            {
                checkbox.setChecked(true);
                checked.add(checkbox.getText());
            }

        }
    });      
  ll.addView(chkFruits);

}

您可以将checked列表传递给下一个活动。