android - 在 BackPressed 上恢复之前的 Activity

标签 android android-activity

我的项目中有两个 Activity 。 A 和 B,当用户单击 Activity A 中的按钮时,我正在打开 Activity B

A ---> B

当用户点击后退按钮时,应用返回 Activity A

一个

在这个 Activity 中,我有一个名为“Resume”的按钮,我想在不丢失任何东西的情况下返回到 Activity B。可能吗?

A ----> B(旧状态)

谢谢。

在 Activity A中

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

Activity B 中的后退按钮点击事件

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

Resume Button in Activity A (should resume activity B) ,这段代码可能是错误的

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

和 list 文件,

      <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>

最佳答案

试试这个:

在你的 list 中,

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

并且在返回时不要在 Activity B 上调用 finish()。所以它应该恢复正在运行的 Activity B 的旧实例。

Reference

所以现在只有在没有任何实例的情况下,才会创建“singleTop” Activity 的新实例来处理新的 Intent 。但是,如果目标任务在其堆栈顶部已有该 Activity 的现有实例,则该实例将接收新 Intent (在 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);
}

在 list 中:

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

此时,ChildActivityonCreate() 在我点击 Go 按钮时被调用。如果我点击 Resume 按钮,它不会重新创建。

关于android - 在 BackPressed 上恢复之前的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24508804/

相关文章:

android - 如何在 Android 应用程序的 Activity 之间传递数据?

android - 如何从 unsigned char* 数组中获取 jpeg 图像数组?

机器人 : How to work around the fact that a singleInstance activity cannot expect to rely onActivityResult when starting subActivity?

android - 如何在 Android 上指定仅适用于手机或平板电脑的 Activity

android - ListView 中的可点击链接

android - 在 Corona SDK 中,如何将记分员放入我的应用程序中?

java - android 6.0 文件提供程序在 FileProvider.getUriForFile 上不工作空指针

android - CalendarView,需要示例

java - 我怎样才能在Android java中 "kill"Intent

Android onResume() 在 onPause() 之前调用?