6

我在一个 android 应用程序中有两个活动,每个活动都有一个按钮可以转到另一个活动(按startActivity()方法)。在第二个活动中,我有一个编辑文本(URL 地址栏)和一个 Web 视图。

所以,当我点击 activity1 的按钮启动 activity2 时,我会得到带有 web 视图的 activity2。然后我在地址栏中键入cnn.com(例如),我的 web 视图将显示该cnn.com网站。之后,我单击按钮从活动 2 转到活动 1。如果我再次点击activity1的按钮,我会启动activity2。但是刚刚创建了activity2,我的意思是,编辑文本和网络视图都是空的。

我想要的是:如果我从活动 1 返回到活动 2,我希望活动 2 保持最后一个状态:编辑文本应该保持cnn.com,网络视图应该继续显示 CNN 网站。所以我需要的不是在启动activity1之前退出activity2,而是隐藏它并启动activity2,这样如果我再次返回它,我就会得到它的最后一个状态。(就像我点击主页按钮时一样。)我怎样才能做到这一点?

4

3 回答 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 实例,你可以在那里看到你最后加载的网站。

于 2012-05-03T16:54:07.840 回答
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","") );
}
于 2012-05-03T16:46:22.410 回答
1

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

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

@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);
   }
于 2014-05-20T07:22:18.483 回答