我写了一个对话框活动,可以在点击通知时触发,如picture1。但是如果启动器活动在堆栈中,它将出现在对话框下方,就像picture2一样。如果没有,对话框活动将单独显示,这就是我想要的,如picture3。 有人可以告诉我为什么吗?
对话框活动使用如下所示的自定义样式:
<style name="DialogTransparent" parent="Theme.AppCompat.Light.Dialog">
<item name="windowNoTitle">true</item>
</style>
以下是通知构建器代码:
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this).setAutoCancel(false).setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.todo_logo)).setSmallIcon(getNotificationIcon()).setContentText(getString(R.string.notificatioin_new_task)).setOngoing(true);
Intent alarmIntent = new Intent(this, DialogEventActivity.class);
PendingIntent alarmPendingIntent = PendingIntent.getActivity(this, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(alarmPendingIntent);
manager.notify(NEW_NOTIFICATION_ID, mBuilder.build());
我认为活动的代码无关紧要,我是对的吗?
答案 0 :(得分:0)
如果从活动A到活动B,并且B是DialogActivity的子类或其主题设置为对话框,则B将在A之前显示为对话框,A也可见,如果您的应用程序不在前台并且您启动活动B,它会将您的整个应用程序带到前台,随身携带您在app中的所有活动。因此,当您离开您的应用程序时,您的活动B和上次可见的活动将同时显示。
为了实现您的目标,您应该将Activity B作为普通活动而不是DialogActivity的子类,并将此活动的布局背景设置为透明,并将contentView设置在屏幕中心。
答案 1 :(得分:0)
答案就在这里: https://stackoverflow.com/a/8924417/5058310
在提出问题之前,真的应该谷歌了...