恢复以前的活动onBackPressed

时间:2014-07-01 11:10:23

标签: android android-activity

我的项目中有两项活动。 A和B,当用户点击活动A中的按钮时,我打开活动B

A --->乙

当用户单击后退按钮时,应用程序返回活动A

A

在这个活动中,我有一个名为“Resume”的按钮,想要返回活动B而不会丢失任何东西。有可能吗?

A ----> B(旧州)

感谢。

在活动A中

 Intent go = new Intent(this,ActivityB.class);
 go.putExtra("type", 1);
 startActivity(go);

活动B中的后退按钮点击事件

  if(v.getId() == R.id.back)
     super.onBackPressed();

恢复活动A中的按钮(应该恢复活动B),这段代码可能是错误的

 Intent go = new Intent(this,ActivityB.class);
 startActivity(go);

清单文件,

      <activity
        android:name="ActivityB"
        android:label="@string/app_name"
        android:launchMode="singleTop"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name="ActivityA"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

1 个答案:

答案 0 :(得分:2)

试试这个:

在你的清单中,

<activity
    android:label="@string/app_name" android:name="ActivityB"
    android:launchMode="singleTop" >

回去时不要在活动B上调用finish()。所以它应该恢复运行活动B的旧实例。

Reference

所以现在只有在没有任何实例的情况下,才会创建一个新的“singleTop”活动实例来处理新意图。但是,如果目标任务已经在其堆栈顶部具有活动的现有实例,则该实例将接收新意图(在onNewIntent()调用中);没有创建新实例。

编辑:

此代码适用于我:

MainActivity

//Go button's onClick
public void goToSecond(View v) {

    Intent go = new Intent(this, ChildActivity.class);
    startActivity(go);
}

//Resume button's onClick
public void resumeSecond(View v) {

    Intent go = new Intent(this, ChildActivity.class);
    startActivity(go);
}

ChildActivity

//Back button's onClick
public void goback(View v) {
    // onBackPressed();
    Intent go = new Intent(this, MainActivity.class);
    startActivity(go);
}

在清单中:

<activity
    android:name="com.example.testingproj.ChildActivity"
    android:label="@string/app_name"
    android:launchMode="singleTask" >

目前,当我点击按钮Go时,会调用ChildActivity的{​​{1}}。如果我点击“恢复”按钮,则不会重新创建。