打开对话框活动时,启动器活动始终显示在堆栈中

时间:2015-11-07 13:53:32

标签: android dialog

click the lower notification to open the dialog activity

if launcher activity is in the stack it will appear below the dialog

if launcher activity is not in the stack the dialog will appear alone, which is what I want.

我写了一个对话框活动,可以在点击通知时触发,如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());

我认为活动的代码无关紧要,我是对的吗?

2 个答案:

答案 0 :(得分:0)

如果从活动A到活动B,并且B是DialogActivity的子类或其主题设置为对话框,则B将在A之前显示为对话框,A也可见,如果您的应用程序不在前台并且您启动活动B,它会将您的整个应用程序带到前台,随身携带您在app中的所有活动。因此,当您离开您的应用程序时,您的活动B和上次可见的活动将同时显示。

为了实现您的目标,您应该将Activity B作为普通活动而不是DialogActivity的子类,并将此活动的布局背景设置为透明,并将contentView设置在屏幕中心。

答案 1 :(得分:0)

答案就在这里: https://stackoverflow.com/a/8924417/5058310

在提出问题之前,

真的应该谷歌了...