我的应用程序具有以下活动层次结构:
A - > B - > ç
到目前为止,一切运作良好。现在我想添加一个通知。当用户点击它时,我想关闭A的所有子活动并启动一个C的实例,其中A为父级,没有B作为中间活动:
A - > ç
为了达到这个目的,我使用了Androids TaskStackBuilder来显示here来构建通知。但是当用户按下后退按钮或使用顶部栏中的向上导航时,这会导致应用程序关闭(没有错误,检查 logcat )。我做错了什么?
...
Intent intent = new Intent(NotificationService.this, C.class);
Intent parentIntent = new Intent(NotificationService.this, A.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(NotificationService.this);
stackBuilder.addNextIntent(parentIntent);
stackBuilder.addNextIntent(intent);
PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
notificationBuilder.setContentIntent(pendingIntent);
...
我的AndroidManifest.xml如下所示:
<activity android:name=".activities.A"
android:label="@string/app_name"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".activities.B"
android:parentActivityName=".activities.A"
android:launchMode="singleTop">
</activity>
<activity android:name=".activities.C"
android:parentActivityName=".activities.B">
</activity>
答案 0 :(得分:0)
Intent intent = new Intent(NotificationService.this, C.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(NotificationService.this);
stackBuilder.addParentStack(B.class);
stackBuilder.addNextIntent(intent);
试试这个。我已经对此进行了测试,但addParentStack(B.class)
应该在B
AndroidManifest.xml
声明的父级
答案 1 :(得分:0)
好的,当我发现这个问题时,我正在使用OxygenOS和OnePlus One。昨天,有一些更新,现在它无需更改任何内容。
适用于Intent
和ParentStack
Adeel Ahmad 建议。也许这只是一个操作系统问题。无论如何,问题解决了。谢谢你的时间。