在安卓系统中隐藏活动

7
我在一个Android应用程序中有两个活动,每个活动都有一个按钮,可以通过startActivity()方法进入另一个活动。在第二个活动中,我有一个编辑文本(URL地址栏)和一个Web视图。
因此,当我点击activity1的按钮以启动activity2时,我会得到带有Web视图的activity2。然后我在地址栏中输入cnn.com(例如),我的Web视图显示了网站。之后,我单击按钮从activity2返回到activity1。 如果我再次点击activity1的按钮,我将启动activity2。但是activity2刚刚创建,我的意思是,编辑文本和Web视图为空。
我想要的是:如果我从activity1返回到activity2,我希望activity2保持上一个状态:编辑文本应该保持cnn.com,Web视图应该继续显示CNN网站。 所以我需要的不是在启动activity1之前退出activity2,而是像隐藏它一样启动activity2,这样如果我再次返回它,我就会得到它的上一个状态。(就像当我点击主页按钮时。)我该如何实现这个?
3个回答

11

这里有一个解决你问题的建议。

当你从Activity two中的按钮进入Activity one时,请确保在从Activity two返回Activity one时,不要结束Activity two。

现在,当你想返回Activity two时,请按下面的方法调用你的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首先出现,而不创建一个新的activity实例,你可以看到之前加载的网页还在那里。


看起来很有趣,但如何“确保从第二个活动返回第一个活动时,不会结束第二个活动。” - Alaoui Ghita
3
只需在您的第二个活动中覆盖返回按钮键,因为在Android中,如果按下返回键,它将结束您的活动。您可以使用以下代码:@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { Intent intent = new Intent(ActivityTwo.this, ActivityOne.class); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivity(intent); } return super.onKeyDown(keyCode, event); } - Herry
当您从第二个活动返回到第一个活动时,只需不调用finish方法即可。 - Herry

2

当按下返回键时,它不会结束活动,而是表现为主页按钮。

您可以进行编辑..这可能有助于不要完成。

@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

我不知道如何隐藏它,但我将在onPause方法中将活动2中的文本保存到首选项中,并在创建活动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","") );
}

我不想将数据保存在某个地方并重新加载网页,因为这会影响性能,我只想在不重新加载网页的情况下返回到上一个状态。 - Alaoui Ghita

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接