gpt4 book ai didi

android - 从服务启动时对话框 Activity 打开两次

转载 作者:行者123 更新时间:2023-11-29 00:12:02 25 4
gpt4 key购买 nike

我有一个服务(称为 AlarmService),它在收到 Intent 时打开一个以对话框为主题的 Activity (在特定时间调用服务)。

@Override
protected void onHandleIntent(Intent intent) {
Intent dialogIntent = new Intent(ctx, LogoutConfirmDialog.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialogIntent);
}

我在 AndroidManifest.xml 中定义了 LogoutConfirmDialog:

<activity android:name=".LogoutConfirmDialog"
android:theme="@android:style/Theme.Holo.Dialog" />

Activity LogoutConfirmDialog 只是创建一个 AlertDialog 并显示它:

public class LogoutConfirmDialog extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

AlertDialog.Builder b = new AlertDialog.Builder(this);

b.setTitle(R.string.dialog_logout_title);
b.setMessage(R.string.dialog_logout_message);
b.setPositiveButton(R.string.dialog_logout_positive, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
AlarmService.logout();
}
});
b.setNegativeButton(R.string.dialog_logout_negative, null);
AlertDialog dialog = b.create();
dialog.show();
}
}

现在的问题是,当显示 LogoutConfirmDialog 时,它会显示两个对话框。

  1. 第一个 是我的对话框,在 LogoutConfirmDialog 的 onCreate 中设置了标题、消息、肯定和否定按钮。
  2. 第二个只有一个标题(某种默认对话框),

从日志中我可以看到它 LogoutConfirmDialog 只启动了一次,但窗口管理器添加了两个窗口

ActivityManager﹕ START u0 {flg=0x10000000 cmp=com.mypackage/.LogoutConfirmDialog} from uid 10104 on display 0

WindowManager﹕ Adding window Window{d342658 u0 com.mypackage/com.mypackage.LogoutConfirmDialog} at 6 of 13 (after Window{7e66f7b u0 com.mypackage/com.mypackage.MainActivity})
V/WindowManager﹕ Adding window Window{1100c096 u0 com.mypackage/com.mypackage.LogoutConfirmDialog} at 6 of 14 (before Window{d342658 u0 com.mypackage/com.mypackage.LogoutConfirmDialog

如何去掉第一个“titleonly”对话框?或者如何防止它添加这个对话框?

提前致谢!

编辑我添加了两个对话框的打印屏幕来澄清情况:

第一个对话框(这就是我想要的) http://i.stack.imgur.com/mxTT0.png

第二个对话框会在任一按钮被点击或被关闭时出现: http://i.stack.imgur.com/bmCk7.png

最佳答案

您调用 create 和 show。您可以让您的构建器只调用 show,它会使用您预定义的参数自动创建。而不是这个:

AlertDialog dialog = b.create();
dialog.show();

用这个显示它:b.show();

关于android - 从服务启动时对话框 Activity 打开两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29601112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com