gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 14:41:57 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com