我有一个服务(称为AlarmService),在收到意图时打开一个以对话为主题的活动(在特定时间调用服务)。
@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时,它会显示两个对话框。
从日志中我可以看到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'-dialog?或者如何防止它添加此对话框?
提前致谢!
修改 我添加了两个Dialogs的打印屏幕来澄清情况:
First Dialog(这就是我想要的) http://i.stack.imgur.com/mxTT0.png
当点击其中一个按钮或被解雇时,会显示第二个对话框: http://i.stack.imgur.com/bmCk7.png
答案 0 :(得分:1)
您调用create和show。您可以只使您的构建器调用show,它会使用您预定义的参数自动创建。而不是这个:
AlertDialog dialog = b.create();
dialog.show();
用此显示:b.show();
答案 1 :(得分:0)
执行以下操作并尝试,而不是创建另一个对象使用相同的对象:
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);
b.show();
希望这会对你有所帮助。