我正在构建一个显示通知的应用程序,在点击通知时,我想打开一个透明的对话框,如活动,其中包含与该通知相关的选项。
我定义了一个透明活动,并将其注册在这样的通知中。
Intent notificationIntent = new Intent(context, EasyToDoReminder.class);
PendingIntent contentIntent = PendingIntent
.getActivity(context, 0, notificationIntent, 0);
活动开始,但主要活动在其后面进行了统计。如何独立打开提醒活动?
而我并不想展示对话。我想将活动看作一个对话框。我已经在使用你提到的主题了。我还有一项主要活动。当我尝试启动像活动这样的透明对话框时,主要活动就是开始,然后开始执行像活动这样的对话框。
任何人都可以建议以更好的方式做到这一点吗?
答案 0 :(得分:3)
清单:
<activity android:name=".popup.PopUp"
android:label="~.Popup"
android:theme="@style/Theme.Transparent"
android:launchMode="singleInstance"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
并且意图:
Intent i = new Intent();
i.setClass(service.getBaseContext(), PopUp.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_SINGLE_TOP |
Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
i.putExtra("id", id + "");
context.startActivity(i);
如果您从服务中拨打电话,请使用 service.getBaseContext() ,如果您不只是使用 上下文 强>
答案 1 :(得分:1)
如果不启动活动,则无法启动对话框。我认为您需要执行以下操作:
android:theme="@android:style/Theme.Dialog"
现在,当您单击通知时,对话框将会显示。
答案 2 :(得分:1)
就像booger所说的那样,将android:theme="@android:style/ThemeDialog"
添加到您的清单的<application ... </application>
部分,让您的主要活动只显示为一个没有背景的对话框。
您还可以使用带有按钮的警告对话框,该对话框可以激活您想要的选项,而不是进行第二项活动:AlertDialog reference
答案 3 :(得分:1)
您需要从主要活动中调用finish();
,以便它不会重新出现在所有其他活动的后面。
更好地解释Unexpected behavior when launching a dialog-style activity
答案 4 :(得分:1)
我解决了我的问题。
首先,我在第二个活动的matifest文件中添加了属性,如下所示。
android:launchMode="singleTask"
在通知发出时,我将以下标志设置为意图。
Intent notificationIntent = new Intent(context, EasyToDoReminder.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET );
它有效!!
答案 5 :(得分:1)
这就是我的诀窍 -
对于结果意图,请执行以下操作:
public void onReceive(Context context, Intent intent) {
...
resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
...
}
对于封装对话框警报的活动,执行此操作(在清单文件中):
<activity
android:launchMode="singleInstance"
</activity>
希望这会有所帮助......
答案 6 :(得分:0)
我认为如果没有首先开始一个活动,我就不能启动一个Dialog(我想你想要做的就是这个)。
您可以将主要活动的样式设置为对话框 - 但除此之外,我认为如果没有将活动上下文绑定到对话框,则无法启动对话框。
我可能会误解你的问题。
答案 7 :(得分:0)
您可以尝试弹出窗口,然后在该弹出窗口内膨胀您的布局。 或者,使用android:theme =“@ android:style / Theme.Dialog”来获取对话效果,当它实际上是一个活动时
答案 8 :(得分:0)
在清单文件中为对话活动设置android:taskAffinity
和android:launchMode="singleTask"
。此answer的所有信用。