我尝试在全局范围内声明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();
}
}
}
});
}
}
答案 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();
}
}
}
});
}