Android 无法为活动创建后台堆栈

Android 无法为活动创建后台堆栈,android,android-intent,android-notifications,android-pendingintent,taskstackbuilder,Android,Android Intent,Android Notifications,Android Pendingintent,Taskstackbuilder,我收到一个通知,我想创建一个自定义后台堆栈,以便用户可以在其中导航。但到目前为止,单击通知会打开所需的活动,但当我按下“上一步”按钮时,它会完全退出应用程序 Intent resultIntent = new Intent(this, NotifViewActivity.class); resultIntent.putExtra(StringHolder.NOTIFICATION_ID, notif.getId()); TaskStackBuilder stackBuilder

我收到一个通知,我想创建一个自定义后台堆栈,以便用户可以在其中导航。但到目前为止,单击通知会打开所需的活动,但当我按下“上一步”按钮时,它会完全退出应用程序

Intent resultIntent = new Intent(this, NotifViewActivity.class);
    resultIntent.putExtra(StringHolder.NOTIFICATION_ID, notif.getId());

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    stackBuilder.addParentStack(HomeActivity.class);
    stackBuilder.addParentStack(NotifActivity.class);
    stackBuilder.addNextIntent(resultIntent);
    PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Builder notificationCompat = new NotificationCompat.Builder(context)
            .setAutoCancel(true)
            .setContentTitle(notif.getTitle())
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentIntent(resultPendingIntent);
清单文件

<activity
        android:name=".NotifActivity"
        android:parentActivityName=".HomeActivity">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".HomeActivity" />
    </activity>
    <activity
        android:name=".NotifViewActivity"
        android:parentActivityName=".NotifActivity">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".NotifActivity" />
    </activity>

我希望它的工作方式是,单击用户被带到的通知 NotifViewActivity然后,当按下后退按钮时,用户被带到NotifActivity,当再次按下后退按钮时,用户被带到
HomeActivity。这就是我试图创建的层次结构,我如何才能做到这一点?

您应该这样构建任务堆栈:

    stackBuilder.addParentStack(HomeActivity.class);
    stackBuilder.addParentStack(NotifActivity.class);
    stackBuilder.addNextIntentWithParentStack(resultIntent);
或者实际上,因为您已经在清单中指定了活动层次结构,所以只需一行即可:

   stackBuilder.addNextIntentWithParentStack(resultIntent);
或另一种不在清单中指定层次结构的归档方法:

试试这个: 将以下代码放入NotifViewActivity

 @Override
        public void onBackPressed() {
            Intent i = new Intent(this, HomeActivity.class);
        i.putExtra("exit", true);
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(i);
        super.onBackPressed();
        }

对于试图使用
TaskStackBuilder
启动已创建活动的任何人,请遵循@Divers solution,然后使用
TaskStackBuilder.startActivities()

i.putExtra(“退出”,true)的含义是什么
i.addFlags(意图、标志、活动、清除、顶部)?和?如何将其应用于当前作者的问题?它将如何添加到后堆栈
HomeActivity
?它实际上如何仅适用于通过单击通知打开活动的情况?在extras中添加
exit-true
有什么帮助,它的选项是让你试试这个。奇怪的是,我的和这个一模一样,但直到我卸载了应用程序并重新安装后才开始工作!!(在emulator上)您将taskStackBuilder.startActivities()放在哪里;?
 @Override
        public void onBackPressed() {
            Intent i = new Intent(this, HomeActivity.class);
        i.putExtra("exit", true);
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(i);
        super.onBackPressed();
        }