Android 从previus活动中获得陈述
我有两个活动,活动A和活动B 活动A有一个复选框和一个按钮 我想做的是当我点击活动按钮时,活动就会开始 根据活动的不同,复选框状态文本视图可见或消失 下面是一个示例代码Android 从previus活动中获得陈述,android,checkbox,Android,Checkbox,我有两个活动,活动A和活动B 活动A有一个复选框和一个按钮 我想做的是当我点击活动按钮时,活动就会开始 根据活动的不同,复选框状态文本视图可见或消失 下面是一个示例代码 public class Main extends Activity { public static CheckBox check1; private Button Button1; CheckBox check1 = (CheckBox)findViewById(R.id.checkB
public class Main extends Activity {
public static CheckBox check1;
private Button Button1;
CheckBox check1 = (CheckBox)findViewById(R.id.checkBox1);
Button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
final Intent i = new Intent(this, Activity_A.class);
startActivity(i);
}
});
活动
Textview1 = (TextView)findViewById(R.id.textView1);
if (Main.check1.isChecked())
{
//code here
}
问题是,当我单击if语句的Activity\u a按钮时,我得到了一个NullPointerExeption
有什么想法吗?提前感谢这样做吧 调用“活动”时发送复选框的值。然后从第二个“活动”中检索该值并相应地进行操作
final Intent i = new Intent(this, Activity_A.class);
i.putExtras("value",""+check1.isChecked());//sending checked value to next activity
startActivity(i);
Textview1 = (TextView)findViewById(R.id.textView1);
Bundle bundle = getIntent().getExtras();
boolean ok=Boolean.parseBoolean(bundle.getString("value"));
if (ok) //checkbox is checked in previous activity
{
//code here
}
假设您没有发布所有内容(此代码不会编译),看起来您将check1分配给了一个局部变量
CheckBox check1 = (CheckBox)findViewById(R.id.checkBox1);
而不是您的静态类变量
public static CheckBox check1;
因此,当您在
Activity\u B
中引用Main.check1时,它仍然是空的。然而,无论如何,这仍然是一种在两个活动之间共享状态的糟糕方式,因为您正在泄漏UI元素。为什么不将布尔值作为捆绑的额外值提交,这是启动活动的意图的一部分,或者在按钮侦听器中设置一个静态布尔变量?两者都是更好、更容易的选择。我还认为,通过将意图从第一个活动传递到第二个活动,可以纠正这一错误
final Intent i = new Intent(this, Activity_A.class);
i.putExtras("value",""+check1.isChecked());//sending checked value to next activity
startActivity(i);`
把这个写在第一个活动中
Textview1 = (TextView)findViewById(R.id.textView1);
Bundle bundle = getIntent().getExtras();
boolean ok=Boolean.parseBoolean(bundle.getString("value"));
if (ok) //checkbox is checked in previous activity
{
//code here
}`
将此写在第二个活动中
final Intent i = new Intent(this, Activity_A.class);
i.putExtras("value",""+check1.isChecked());//sending checked value to next activity
startActivity(i);`