gpt4 book ai didi

android - 如何正确返回父 Activity ?

转载 作者:IT老高 更新时间:2023-10-28 12:54:19 24 4
gpt4 key购买 nike

我的 android 应用程序中有 2 个 Activity (A 和 B),我使用 Intent 从 Activity A 获取到 Activity B。启用了 parent_activity 的使用:

 <activity
android:name=".B"
android:label="B" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.app_name.A" />
</activity>

我还使用了一个提供向上按钮的主题。

所以在我调用了 Activity B 之后,我可以使用向上按钮返回到 Activity A。问题是应用程序似乎再次调用了 Activity A 的 onCreate() 函数,并且这不是我需要的行为。我需要 Activity A 看起来与调用 Activity B 之前的外观相同。

有没有办法做到这一点?

编辑

我没有编写任何代码来从 Activity A 启动 Activity B。我认为它是由 Eclipse 自动生成的。

B 类看起来像:

    @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
getActionBar().setDisplayHomeAsUpEnabled(true);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_b, menu);
return true;
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}

最佳答案

您在 Android list 中使用标准 launchMode 声明了 Activity A。根据the documentation ,这意味着以下内容:

The system always creates a new instance of the activity in the target task and routes the intent to it.

因此,即使任务堆栈被正确处理,系统也被迫重新创建 Activity A(即调用onCreate)。

要解决此问题,您需要更改 list ,将以下属性添加到 A Activity 声明:

android:launchMode="singleTop"

注意: 调用 finish()(如之前建议的解决方案)在您完全确定时有效> 您要终止的 Activity B 实例位于 Activity A 的实例之上。在更复杂的工作流程中(例如,从通知启动 Activity B)可能并非如此,您必须从 B 正确启动 Activity A .

关于android - 如何正确返回父 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12276027/

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