Jud*_*des 2 android android-intent android-notifications android-pendingintent taskstackbuilder
我收到一个通知,我想创建一个自定义的Back Stack,以便用户可以浏览它。但是到目前为止,单击通知会打开所需的活动,但是当我按下Back按钮时,它会完全退出该应用程序。
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);
Run Code Online (Sandbox Code Playgroud)
清单文件
<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>
Run Code Online (Sandbox Code Playgroud)
我希望它的工作方式是,在单击通知时,将用户转到 NotifViewActivity,然后在按下后退按钮时,将用户转到NotifActivity;当再次按下后退按钮时,将用户 转到 HomeActivity。正在尝试创建,我该怎么做?
您应该以这种方式构建任务堆栈:
stackBuilder.addParentStack(HomeActivity.class);
stackBuilder.addParentStack(NotifActivity.class);
stackBuilder.addNextIntentWithParentStack(resultIntent);
Run Code Online (Sandbox Code Playgroud)
或者实际上是因为您已经在清单中指定了活动层次结构,所以只需一行即可完成:
stackBuilder.addNextIntentWithParentStack(resultIntent);
Run Code Online (Sandbox Code Playgroud)
或者另一种无需在manifest中指定层次结构即可将其归档的方法:
Intent mainActivityIntent = new Intent(this, HomeActivity.class);
Intent notifActivityIntent = new Intent(this, NotifActivity.class);
stackBuilder.addNextIntent(mainActivityIntent);
stackBuilder.addNextIntent(notifActivityIntent);
stackBuilder.addNextIntent(resultIntent);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
659 次 |
| 最近记录: |