android 保存历史,Android:启动第二个活动时保存历史记录

创建了2个具有相同布局,相同按钮位置,相同按钮ID的活动,所有内容均相同

例:

在first_activity和second_activity中添加了3个按钮,所有按钮都放置在同一位置,并且具有相同的id,button1和button2,但最后一个按钮" check"将可见性设置为"消失"。

第一次活动

设置button1和button2的背景资源

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.first_activity);

..................................................

//Change button1 drawable to example1.png

button1 = (Button) ....

button1.setBackgroundResource(R.drawable.example1);

//Change button2 drawable to example1.png

button2 = (Button) ....

button2.setBackgroundResource(R.drawable.example1);

//Check Button

check = (Button) findViewById(R.id.check);

check.setBackgroundResource(R.drawable.example1);

..................................................

}

button1 onClick

public void button1_click (View v){

//If button2 drawable same as check it will changed to another drawable

if (button2.getBackground().getConstantState().equals(check.getBackground().getConstantState())){

button2.setBackgroundResource(R.drawable.example2);

}

else {

button2.setBackgroundResource(R.drawable.example1);

}

}

button2 onClick

public void button2_click (View v){

Intent second_activity=new Intent (getApplicationContext(), second_activity.class);

startActivity(second_activity);

//Calling Second Activity when button2 pressed

finish();

//Finish First Activity

}

条件:第一次按下button1,button2 drawable更改为example2.png。 第二次按下的按钮2将启动second_activity并关闭first_activity

我的问题:启动second_activity后如何将button2 drawable设置为example2.png

我在second_activity中使用以下代码与first_activity相同

第二活动

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.second_activity);

..................................................

//Change button1 drawable to example1.png

button1 = (Button) ....

button1.setBackgroundResource(R.drawable.example1);

//Change button2 drawable to example1.png

button2 = (Button) ....

button2.setBackgroundResource(R.drawable.example1);

//Check Button

check = (Button) findViewById(R.id.check);

check.setBackgroundResource(R.drawable.example1);

..................................................

}

由于您在第二个活动中仅更改了UI的一部分,因此我建议您使用ViewFlipper。请参阅docs http:developer.android.comreferenceandroidwidgetViewFlipper.html作为参考。

您可以将"额外"添加到用于启动第二个活动的Intent中。 此"额外"可能包含有关按钮状态的信息。 在第二个活动的onCreate()中,您可以检查"额外"中的信息,并相应地设置按钮的背景。

编辑:添加示例代码

我将为每个按钮创建一个布尔变量,以指示背景的状态,并将其添加到每个活动中,如下所示:

private boolean button1Checked;

private boolean button2Checked;

然后,无论何时更改背景色,都将更改相应变量的状态:

if (...) {

button2.setBackgroundResource(...);

button2Checked = true; // or false, whatever

}

然后,当您要启动activity2时,将两个按钮的状态作为附加内容添加到Intent,如下所示:

Intent intent=new Intent (this, second_activity.class); // use"this" instead of getApplicationContext()

intent.putExtra("button1Checked", button1Checked);

intent.putExtra("button1Checked", button2Checked);

startActivity(intent);

现在,在第二个活动的onCreate()中,您可以从传递的附加内容中恢复按钮的状态,如下所示:

button1 = (Button) ....

button1Checked = getIntent().getBooleanExtra("button1Checked", false);

if (button1Checked) {

button1.setBackgroundResource(...); // true state

} else {

button1.setBackgroundResource(...); // false state

}

button2 = (Button) ....

button2Checked = getIntent().getBooleanExtra("button2Checked", false);

if (button2Checked) {

button2.setBackgroundResource(...); // true state

} else {

button2.setBackgroundResource(...); // false state

}

希望你能明白。

还需要在第二个活动中创建布尔变量吗?

是的,您需要在每个活动中创建布尔变量。 但是显然,根据您的最新评论,它可以正常工作。 好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值