android - ActivityGroup中,如何恢复之前的activity(不重启)

标签 android

我有一个 ActivityGroup,它在一个 Tab 中有 4 个 Activity。

A1->A2->A3->A4

假设我从上一个 Activity 正在重新启动的任何 Activity 中按回。当我调用一个新的 Activity 时,我的要求应该是重新开始。当我按下后退按钮时,必须恢复之前的 Activity (无需重新启动)。

请帮我解决这个问题。我缺乏设置适当的 Intent 标志。我的代码是这样的。

      public void startChildActivity(String Id, Intent intent) {

        Window window;
        Log.e("startChildActivity","startChildActivity");

            window = getLocalActivityManager().startActivity(Id,intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));

            if (window != null) 
            {
                mIdList.add(Id);

                setContentView(window.getDecorView());
            }


    } 


        public void finishFromChild(Activity child) 
    {
        restartFlag=true;

        Log.e("finishFromChild","finishFromChild");
        LocalActivityManager manager = getLocalActivityManager();

        int index = mIdList.size()-1;

        if (index < 1) {

            finish();

            return;
        }

        manager.destroyActivity(mIdList.get(index), true);

        mIdList.remove(index);

        index--;

        String lastId = mIdList.get(index);

        Intent lastIntent = manager.getActivity(lastId).getIntent();

        Window newWindow = manager.startActivity(lastId, lastIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));

        setContentView(newWindow.getDecorView());

    }

最佳答案

您好,我终于找到了解决方案。其实罪魁祸首是

   manager.destroyActivity(mIdList.get(index), true); 

在代码中。

Android destroyActivity() 函数实现中存在错误。

问题的确切根源在于 LocalActivityManager.java 中的以下代码块:

public Window destroyActivity(String id, boolean finish) {
    LocalActivityRecord r = mActivities.get(id);
    Window win = null;
    if (r != null) {
        win = performDestroy(r, finish);
        if (finish) {
            mActivities.remove(r);
        }
    }
    return win;
}

变量 mActivities 是包含 Activity 记录的 HashMap ,它使用传递给 startActivity() 的 id 作为键。在此方法中,为键传入的对象是 LocalActivityRecord 而不是 id 字符串。这会导致 HashMap 找不到该条目,因此不会将其删除。

更多信息请引用此链接。 http://code.google.com/p/android/issues/detail?id=879More

关于android - ActivityGroup中,如何恢复之前的activity(不重启),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6330029/

相关文章:

javascript - 仅在子菜单存在时显示图标

java - 如何将phpmyadmin数据库与android应用程序连接

android - CheckBox 使 listView 项目不可点击

android - 如何在 Android 中加载高分辨率位图?

android - 是否可以在 android studio 的 java 文件中使用 scala 对象?

Android XML 布局文件和命名空间

Android gcm 通知有效负载与数据有效负载?

Android:当我按下主页时恢复 Activity

java - 如何使用 BottomNavigationBar 保存 fragment 的状态?

java - 将 RGB 颜色转换为 x,y 方向并返回