我在Android应用程序中有两个活动,每个活动都有一个转到另一个活动的按钮(通过startActivity()
方法)。在第二个活动中,我有一个编辑文本(URL地址栏)和一个Web视图。
因此,当我点击activity1的按钮启动activity2时,我会在web视图中获得activity2。然后我在地址栏中输入cnn.com
(例如),我的网页视图显示cnn.com
网站。之后,我点击按钮从activity2转到activity1。
如果我再次点击activity1的按钮,我会启动activity2。但是我刚刚创建了activity2,编辑文本和Web视图都是空的。
我想要的是:如果我从activity1返回到activity2,我希望activity2保持最后状态:编辑文本应该保持cnn.com
,并且Web视图应该继续显示CNN网站。
所以我需要的是在启动activity1之前不要退出activity2,但是只需要隐藏它并启动activity2,这样如果我再次返回它,我就会得到它的最后状态。 (就像我点击主页按钮一样。)我怎样才能实现这个目标?
答案 0 :(得分:7)
以下是解决问题的建议。
当您从活动二中的按钮开始时,现在您处于活动一中,确保当您从活动二移动到一个时,它不应该完成活动二。
现在当你想回到Activity 2时,你需要在下面调用你的Activity。
Intent mIntent=new Intent(yourActivityOne1.this, YourActivity2.class);
mIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
mIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(mIntent);
所以这段代码所做的就是让Activity首先过来而不创建新的活动实例,你可以看到你最近加载的网站。
答案 1 :(得分:1)
我不知道如何隐藏它,但我要做的是将活动2中的文本保存到onPause方法的首选项中,并在创建活动2时从首选项加载数据。
活动2将如下所示:
onPause(){
SharedPreferences settings = getSharedPreferences("MyPreferences", MODE_PRIVATE);
SharedPreferences.Editor prefEditor = settings.edit();
prefEditor.putString("activity2Text", textField.getText().toString());
prefEditor.commit();
}
onCreate(){
.....
SharedPreferences settings = getSharedPreferences("MyPreferences", MODE_PRIVATE);
textField.setText(settings.getString("activity2Text","") );
}
答案 2 :(得分:1)
它不会完成活动onBackPressed它将表现为Home Button
你可以编辑它...它可能有助于不完成
@Override
public void onBackPressed()
{
Log.d("CDA", "onBackPressed Called");
Intent setIntent = new Intent(Intent.ACTION_MAIN);
setIntent.addCategory(Intent.CATEGORY_HOME);
setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(setIntent);
}