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();
}