Android:启动第二个活动时保存历史记录
Posted
技术标签:
【中文标题】Android:启动第二个活动时保存历史记录【英文标题】:Android: Save History When Launch Second Activty 【发布时间】:2013-05-06 16:09:25 【问题描述】:创建了 2 个具有相同布局、相同按钮位置、相同按钮 ID 的 Activity,一切都相同
例子:
在 first_activity 和 second_activity 中添加了 3 个按钮,所有内容都放在同一个地方,并且具有相同的 id、button1 和 button2 但最后一个按钮,“检查”将可见性设置为消失。
第一次活动
为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。 Second Pressed button2 将启动 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
。查看文档 http://developer.android.com/reference/android/widget/ViewFlipper.html
以供参考。
【参考方案1】:
您可以向用于启动第二个活动的 Intent 添加“额外”。这个“额外”可能包含有关按钮状态的信息。在第二个activity的onCreate()
中,您可以查看“extra”中的信息,并相应地设置按钮的背景。
编辑:添加示例代码
我会为每个按钮创建一个布尔变量,指示背景的状态并将其添加到每个活动中,如下所示:
private boolean button1Checked;
private boolean button2Checked;
然后,每当您更改背景颜色时,都会更改相应变量的状态:
if (...)
button2.setBackgroundResource(...);
button2Checked = true; // or false, whatever
然后,当您要启动activity2时,将2个按钮的状态作为附加项添加到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
希望你能明白。
【讨论】:
还需要在第二个活动中创建布尔变量吗? 是的,您需要在每个活动中创建布尔变量。但显然,根据您最近的评论,您可以正常工作。很好。以上是关于Android:启动第二个活动时保存历史记录的主要内容,如果未能解决你的问题,请参考以下文章