是否可以在一个活动中保存按钮的状态,然后将其传递给新活动?

时间:2014-02-17 08:43:38

标签: android button

我的问题几乎总结了我想做的事情。

我的想法是,如果让我们说(按下活动A的按钮1)和活动B加载我想在活动B中传递按钮1的状态(按下或不按),我想用它做一些事情。例如:

if(button1.isChecked())
{
     //do something
}

7 个答案:

答案 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");
}