为什么AlertDialog显示我不想要的时候

时间:2014-09-22 15:28:06

标签: android android-activity dialog

我在AlarmManager中显示AlertDialog。 DialogNotification(警告对话框) - 活动,在清单中:

<activity
        android:name=".notification.DialogNotification"
        android:label="@string/title_activity_dialog_notification"
        android:theme="@android:style/Theme.Translucent.NoTitleBar">
    </activity>

即使程序没有运行,我希望对话显示,但是当我去应用程序时,在Splash Screen中显示对话框,但我不打电话给他。我怎么解决它?

public class DialogNotification extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Log.d("Log", "onCreate DialogNotification");

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setIcon(R.drawable.app_icon)
                .setTitle(R.string.time_to_call_your_clients)
                .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Intent notificationIntent = new Intent(DialogNotification.this, SplashActivity.class);
                        startActivity(notificationIntent);
                        dialog.cancel();
                        DialogNotification.this.finish();
                    }
                })
                .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                        DialogNotification.this.finish();
                    }
                }).show();
    }
}

2 个答案:

答案 0 :(得分:0)

我对你的陈述感到有点困惑&#34;我希望即使程序没有运行也要显示对话&#34;因为如果程序没有运行,我不太确定对话应该如何显示。此外,如果不了解您的程序流程,我无法准确找出问题所在。

话虽如此,这是我的猜测。如果您在进入DialogNotification活动时看到此事件,则问题可能是您每次拨打&#34; onCreate&#34;时都要创建新的AlertDialog.Builder

如果您想拥有一个AlertDialog实例,那么您可能需要添加条件语句(if语句)以确保您想要创建新的AlertDialog

答案 1 :(得分:0)

我发现了我的问题!我启动服务,启动DialogActivity,方法onStartCommand是:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    //some code 
    return super.onStartCommand(intent, flags, startId);
}

这不是正确的解决方案!

这是正确的解决方案:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    //some code 
    stopSelf();
    return START_NOT_STICKY;
}