3

当我在收到 GCM 消息后启动 Activity 时,它会在所需的 Activity 旁边启动,MainActivity 也会启动。问题是,我想将不想要的 Activity (DialogActivity) 显示为 Dialog-Box-Style Activity,所以它的背景是透明的。

这就是我开始活动的方式:

@Override
protected void onMessage(Context arg0, Intent arg1) {
  Log.d("GCM", "RECIEVED A MESSAGE");
  generateNotification(arg0, arg1.getStringExtra("message"));
  Intent i = new Intent();
    i.setClass(this, DialogActivity.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(i); 
   }

这是styles.xml 中的主题

<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>

因此,透明的 Activity 位于 MainActivity 之上,这是我想避免的。它应该只显示 DialogActivity。有谁知道帮助?

4

1 回答 1

6

我已经解决了。对于将来遇到问题的任何人:将 FLAG_ACTIVITY_MULTIPLE_TASK 标志添加到 Intent

Intent i = new Intent();
i.setClass(this, DialogActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(i); 

根据Android文档

于 2012-09-06T13:55:13.233 回答