【问题标题】:How to show an activity without showing parent activity?如何在不显示父活动的情况下显示活动?
【发布时间】:2013-09-18 18:42:47
【问题描述】:

我有一个 SMSReceiver 类,它扩展了 BroadcastReceiver。收到短信后,我会创建通知。当它被点击时,我开始我自己的(不是主要的!)活动 - DialogActivity:

Intent mIntent = new Intent(context, DialogActivity.class);
...
mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent mPendingIntent =
    PendingIntent.getActivity(
    context,
    mNotificationId,
    mIntent,
    0
);          
mBuilder.setContentIntent(mPendingIntent);

但是,它始终显示在主要活动的顶部。因此,如果我从DialogActivity 调用finish,则会显示主要活动。我该如何避免呢?

DialogActivity 类如下所示:

public class DialogActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog); // android:theme="@android:style/Theme.Dialog"

        Button dialogBtnNo = (Button) findViewById(R.id.dialog_btn_no);

        dialogBtnNo.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                finish(); // close this activity
            }
    ...

和清单文件:

   <activity
        android:name="my.package.DialogActivity"
        android:label="@string/title_activity_dialog"
        android:theme="@android:style/Theme.Dialog"
        android:configChanges="keyboardHidden|orientation">
    </activity>

【问题讨论】:

  • 贴出DialogActivity.class的全部代码
  • @Metalhead1247,已添加。
  • 将上下文更改为 getapplicationbasecontext()
  • 我不确定这是否可行,但您是否尝试过添加Flag FLAG_ACTIVITY_CLEAR_TOP
  • 不,Context 是正确的

标签: android android-intent android-pendingintent android-broadcast


【解决方案1】:

在开始新活动之前,使用 FLAG_ACTIVITY_CLEAR_TASK 清除当前任务。

来自docs的FLAG_ACTIVITY_NEW_TASK-的问题:

当使用这个标志时,如果一个任务已经在为这个活动运行 您现在正在开始,则不会开始新的活动; 相反,当前任务将简单地被带到前面 屏幕上的状态。

此标志在 api 11 或更高版本以及 v4 支持库中可用。

【讨论】:

【解决方案2】:

AndroidManifest.xmlDialogActivity 标记中使用android:launchMode="singleInstance"。它将正常工作。

【讨论】:

    猜你喜欢
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多