在Android中隐藏活动

问题描述 投票:0回答:3

我在 Android 应用程序中有两个活动,每个活动都有一个可转到另一个活动的按钮(通过

startActivity()
方法)。在第二个活动中,我有一个编辑文本(URL 地址栏)和一个 Web 视图。

因此,当我单击 Activity1 的按钮来启动 Activity2 时,我会通过 Web 视图获取 Activity2。然后,我在地址栏中输入

cnn.com
(例如),我的 Web 视图将显示
cnn.com
网站。之后,我单击按钮从 Activity2 转到 Activity1。 如果我再次点击activity1的按钮,我就会启动activity2。但是 Activity2 刚刚创建,我的意思是,编辑文本和 Web 视图都是空的。

我想要的是:如果我从activity1返回到activity2,我希望activity2保持最后的状态:编辑文本应保持

cnn.com
并且Web视图应继续显示CNN网站。 所以我需要的不是在启动 Activity1 之前退出 Activity2,而是隐藏它并启动 Activity2,这样如果我再次返回它,我就会得到它的最后状态。 (就像我点击主页按钮一样。)我怎样才能实现这一点?

android android-activity
3个回答
11
投票

这是解决您问题的建议。

当您从活动二中的按钮转到活动一时,请确保当您从活动二移动到活动一时,它不应该完成活动二。

现在,当您想返回活动二时,您需要像下面这样调用您的活动。

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 首先出现,而无需创建新的 Activity 实例,您可以在那里看到上次加载的网站。


2
投票

它不会完成 BackPressed 上的活动,它将表现为主页按钮

你可以编辑它..它可能有助于不finsih

@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);
   }

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","") );
}
© www.soinside.com 2019 - 2024. All rights reserved.