gpt4 book ai didi

android - 具有隐式 Intent 的父 Activity

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:31:52 27 4
gpt4 key购买 nike

我在 list 中成功地使用了属性 android:parentActivityName,以便在另一个 Activity ( Activity B)通过推送通知启动时设置父 Activity ( Activity A)。然后,如果我返回,我将导航到 Activity A。

但是,它不适用于隐式 Intent 。我在 list 中为 Activity B 声明了一个 Intent 过滤器。当从应用程序外部启动 Activity B 时,它似乎不会影响属性 android:parentActivityName(或具有较低 API 的元数据 android.support.PARENT_ACTIVITY)。

在这种情况下我如何设置父 Activity?

list block :

<activity
android:name="com.domain.app.activities.ActivityB"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateUnchanged"
android:parentActivityName="com.domain.app.activities.ActivityA" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.domain.app.activities.ActivityA" />
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http" android:host="domain.com" android:pathPattern=".*" />
</intent-filter>
</activity>

感谢任何帮助。

谢谢!

最佳答案

来自开发人员文档:https://developer.android.com/training/implementing-navigation/ancestral

使用新的返回堆栈向上导航如果您的 Activity 提供任何 intent filters允许其他应用程序启动 Activity ,您应该实现 onOptionsItemSelected()回调,这样如果用户在从另一个应用程序的任务进入您的 Activity 后按下向上按钮,您的应用程序会在向上导航之前使用适当的返回堆栈启动一个新任务。

您可以先调用 shouldUpRecreateTask()检查当前 Activity 实例是否存在于不同应用程序的任务中。如果它返回 true,则使用 TaskStackBuilder 构建一个新任务.否则,您可以使用 navigateUpFromSameTask()方法如上所示。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
Intent upIntent = NavUtils.getParentActivityIntent(this);
if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
// This activity is NOT part of this app's task, so create a new task
// when navigating up, with a synthesized back stack.
TaskStackBuilder.create(this)
// Add all of this activity's parents to the back stack
.addNextIntentWithParentStack(upIntent)
// Navigate up to the closest parent
.startActivities();
} else {
// This activity is part of this app's task, so simply
// navigate up to the logical parent activity.
NavUtils.navigateUpTo(this, upIntent);
}
return true;
}
return super.onOptionsItemSelected(item);
}

注意:为了使 addNextIntentWithParentStack() 方法起作用,您必须在 list 文件中声明每个 Activity 的逻辑父级,使用 android :parentActivityName 属性(和相应的元素)如上所述。

关于android - 具有隐式 Intent 的父 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30191568/

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