我的问题几乎总结了我想做的事情。
我的想法是,如果让我们说(按下活动A的按钮1)和活动B加载我想在活动B中传递按钮1的状态(按下或不按),我想用它做一些事情。例如:
if(button1.isChecked())
{
//do something
}
答案 0 :(得分:1)
通过第一个活动中的 intent 调用第二个活动时,您可以通过 Bundles 传递它。使用布尔变量传递按钮的状态,并将其存储在第二个活动中。然后在if条件中使用该变量。
在活动A :
Intent saveButtonState = new Intent(getApplicationContext(),B.class);
Bundle b = new Bundle();
b.putBoolean("Button_state", button1.isChecked()); //Save the button state in activity A
saveButtonState.putExtras(b);
saveButtonState.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity( saveButtonState);
在活动B中:
Bundle b = getIntent().getExtras();
Boolean buttonState = b.getBoolean("Button_state"); //Retreive button state in activity B
if(buttonState)
{
//do something
}
答案 1 :(得分:1)
是,保持活动A中按钮的状态在首选项存储中同步,并在onCreate()中加载布局后初始化具有该状态的按钮B.
这比使用意图更好,因为它遵循关注点分离的原则。同步仅限于按钮A的onClick事件。它还允许您保持状态从B到A的另一种方式同步,而不会覆盖onBackPressed事件或其他生命周期事件。
答案 2 :(得分:1)
你可以通过意图来做到这一点:
Intent intent = new Intent(this, YOUR_ACTIVITY.class);
intent.putExtra("BUTTON_STATE", button1.isChecked());
startActivity(intent);
在被叫活动的onCreate()中:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
boolean buttonState = getIntent().getBooleanExtra("BUTTON_STATE", false);
....
}
答案 3 :(得分:0)
在第一项活动中,您可以使用:
Intent intent = new Intent(this, Your 2nd Activity.class);
intent.putExtra("buttonStatus", "you button status true or false");
startActivity(intent);
在oncreate中的第二个活动中,您将使用:
boolean getButtonStatus = getIntent().getBooleanExtra("buttonStatus", false);
答案 4 :(得分:0)
您可以手动调用onSaveInstanceState来获取状态。这将返回一个可以使用的parcleable。
传递它然后调用恢复:
youtView.onRestoreInstanceState(state);
看看:
http://developer.android.com/reference/android/view/View.html#onSaveInstanceState()
答案 5 :(得分:0)
这是Intent Extras的工作!
当您启动第一个活动时,请执行以下操作:
boolean buttonState; //The variable where you hold the button state in Activity A
Intent intent = new Intent(this, ActivityB.class);
intent.putExtra("button_state", buttonState);
startActivity(intent);
然后在活动B中:
Intent intent = getIntent();
boolean buttonState = intent.getBooleanExtra("button_state", false);
然后按预期使用该值:
if(buttonState)
{
//do something
}
答案 6 :(得分:-1)
在第一项活动中
if(button1.isChecked())
{
Intent i = new Intent(/* your intent */);
i.putExtra("KEY", value);
}
在第二个(接收者活动)onCreate方法
if (savedInstanceState == null) {
extras = getIntent().getExtras();
if(extras == null) {
value= null;
} else {
value= extras.getBoolean("KEY");
}