想要勾选复选框以在按钮单击时打印ID

时间:2015-07-10 14:48:38

标签: android

我尝试在全局范围内声明CheckBox并且它给了NullPointerException。我尝试在OnClickListener之外没有Array的情况下声明它,但是出现错误“不能有相同的父母”。请帮忙。

public class MainActivity extends ActionBarActivity {
    EditText e1;
    Button b1,b2;
    TextView tv1;
    RelativeLayout rl;

    int i,k,l;
    static int j;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        rl= (RelativeLayout) findViewById(R.id.me);
        tv1= (TextView) findViewById(R.id.tv1);
        e1= (EditText) findViewById(R.id.et);
        b2= (Button) findViewById(R.id.bt1);
        b1= (Button) findViewById(R.id.bt);
        i=324;
        j=0;
        b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                CheckBox[] t = new CheckBox[j];

                t[j].setText(e1.getText().toString());

                t[j].setTextColor(Color.parseColor("#01A0AC"));
                t[j].setId(j);
                RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
                params.topMargin = i;
                rl.addView(t[j],params);

                i=i+30;
                j=j+1;

            }
        });
        b2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                for(k=0;k<j;k++){

                    if (t[k].isChecked()) {
                        Toast.makeText(getApplicationContext(),"Selected CheckBox ID" + v.getId(), Toast.LENGTH_LONG).show();
                    }

                }
            }
        });
    }
}

2 个答案:

答案 0 :(得分:0)

你究竟在哪里获得nullpointer?我假设你来到这里:

&GT;

CheckBox[] t = new CheckBox[j+1];
t[j] = new CheckBox();
 t[j].setText(e1.getText().toString());

如果你想在第二个onclicklistener中使用数组,你必须全局声明它并添加一个t!= null&amp;&amp; t [k]!= null if子句,以防止在您点击b1之前的b2时杀死应用程序

答案 1 :(得分:0)

public class MainActivity extends ActionBarActivity {
EditText e1;
Button b1,b2;
TextView tv1;
 RelativeLayout rl;

int i,k,l;
static int j;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    rl= (RelativeLayout) findViewById(R.id.me);
    tv1= (TextView) findViewById(R.id.tv1);
    e1= (EditText) findViewById(R.id.et);
    b2= (Button) findViewById(R.id.bt1);
    b1= (Button) findViewById(R.id.bt);
    i=324;
    j=0;
    final List<CheckBox> t = new ArrayList<CheckBox>(30);

    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
   CheckBox ch= new CheckBox(getApplicationContext());

            ch.setText(e1.getText().toString());

            ch.setTextColor(Color.parseColor("#01A0AC"));
            ch.setId(j);
            RelativeLayout.LayoutParams params = new           RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
            params.topMargin = i;
            rl.addView(ch,params);
 t.add(ch);
i=i+30;
j=j+1;


        }
    });
 b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

    for(k=0;k<j;k++){

            if (t.get(k).isChecked()) {
            Toast.makeText(getApplicationContext(),"Selected CheckBox ID" + t.get(k).getId(), Toast.LENGTH_LONG).show();

        }



    }
}
});


}
相关问题