打开对话框 activity 时,如果在堆栈中,启动器 activity 始终显示在下方
When opening dialog activity, the launcher activity always shows below if in the stack
我写了一个对话框activity,它可以在点击通知时触发,比如图片1。但如果启动器 activity 在堆栈中,它将出现在对话框下方,就像图 2 一样。如果没有,对话框activity将单独显示,这就是我想要的,如图3。
谁能告诉我为什么?
对话框activity使用如下自定义样式:
<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());
我认为 Activity 的代码无关紧要,对吗?
如果从ActivityA到ActivityB,且B是Dialog的子类Activity或者其主题设置为对话框,B将作为对话框显示在A之前, A 也是可见的,如果您的应用程序不在前台并且您启动 Activity B,它将把您的整个应用程序带到前台,在您的 app.So 您的 Activity B 中进行所有活动以及您最后一次可见 activity 离开时,您的应用将同时可见。
因此,为了实现您的目标,您应该让您的 Activity B 作为普通 activity,而不是 DialogActivity 的子类,并为此设置布局背景 activity 设置为透明并将您的 contentView 设置在屏幕中央。
答案就在这里:
在提问之前真的应该google更多...
我写了一个对话框activity,它可以在点击通知时触发,比如图片1。但如果启动器 activity 在堆栈中,它将出现在对话框下方,就像图 2 一样。如果没有,对话框activity将单独显示,这就是我想要的,如图3。 谁能告诉我为什么?
对话框activity使用如下自定义样式:
<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());
我认为 Activity 的代码无关紧要,对吗?
如果从ActivityA到ActivityB,且B是Dialog的子类Activity或者其主题设置为对话框,B将作为对话框显示在A之前, A 也是可见的,如果您的应用程序不在前台并且您启动 Activity B,它将把您的整个应用程序带到前台,在您的 app.So 您的 Activity B 中进行所有活动以及您最后一次可见 activity 离开时,您的应用将同时可见。
因此,为了实现您的目标,您应该让您的 Activity B 作为普通 activity,而不是 DialogActivity 的子类,并为此设置布局背景 activity 设置为透明并将您的 contentView 设置在屏幕中央。
答案就在这里:
在提问之前真的应该google更多...