透明活动在主要活动上开放。 如何打开它不是主要的活动?

我正在构build一个应用程序,它将显示一个通知,并单击通知,我想要打开一个透明的对话框,如活动,将有相关的通知选项。

我定义了一个透明的活动,并在这样的通知中注册。

Intent notificationIntent = new Intent(context, EasyToDoReminder.class); PendingIntent contentIntent = PendingIntent .getActivity(context, 0, notificationIntent, 0); 

活动开始,但主要活动是在它后面。 如何独立打开提醒活动?

而我并不想展示对话。 我想显示一个活动看起来像一个对话框。 我已经在使用你提到的主题了。 我也有一个主要的活动。 当我试图像活动一样开始我的透明对话框时,主要活动正在开始,然后活动对话框开始。

任何人都可以请build议采取更好的方法来做到这一点?

Solutions Collecting From Web of "透明活动在主要活动上开放。 如何打开它不是主要的活动?"

好的,我也有这个问题
使用另一个LAUNCHER活动进行第二次活动

清单:

  <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() ,并且你不只是使用你的上下文

如果不开始活动,则无法启动对话框。 我认为你需要做到以下几点:

  • 创build一个新的活动,将其样式更改为Dialog风格:
    • android:theme="@android:style/Theme.Dialog"
  • 在这个新的活动中,添加所有你想要发生的事情,当用户点击通知。
  • 像你一样把你的通知链接到它。

现在,当你点击通知时,对话框就会显示出来。

就像booger说的那样,将你的主要活动的一部分添加到你的清单的<application ... </application>部分android:theme="@android:style/ThemeDialog"android:theme="@android:style/ThemeDialog"到对话框中,而不需要背景。

您还可以使用警报对话框中的button,它可以激活您想要的选项,而不是有第二个活动: AlertDialog引用

你需要调用finish(); 从您的主要活动,以便它不会重新出现在其他任何活动后面。

这里更好地解释启动对话式活动时的意外行为

我解决了我的问题。

首先我在下面的第二个活动matifest文件中添加属性。

 android:launchMode="singleTask" 

而从通知开始,我设置了以下标志的意图。

 Intent notificationIntent = new Intent(context, EasyToDoReminder.class); notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET ); 

有用!!

这是对我的诡计 –

对于结果意图这样做:

 public void onReceive(Context context, Intent intent) { ... resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ... } 

对于封装对话框警报的活动,请执行以下操作(在清单文件中):

  <activity android:launchMode="singleInstance" </activity> 

希望这可以帮助…

我不认为如果没有首先启动一个活动(这是我想你正在尝试做什么),你将无法启动一个对话框。

你可以将你的主要活动devise成一个对话框,但是除此之外,我认为如果没有一个活动的上下文,你就不能启动一个对话框。

我可能会误解你的问题。

您可以尝试popup窗口,然后膨胀您的布局在该popup窗口。 或者,使用android:theme =“@ android:style / Theme.Dialog”来获得对话的效果,当它实际上是一个活动

在对话框活动的清单文件中设置android:taskAffinityandroid:launchMode="singleTask" 。 所有学分到这个答案 。