铃声响起后,对话框快速消失 - android

时间:2013-01-27 19:08:46

标签: android alertdialog

我创建了一个程序,即使手机被锁定,如果收到消息也会响铃。当电话响铃时,它会显示关闭按钮以停止闹钟,但是我的代码只显示了关闭按钮并快速消失,让我无法选择如何停止闹钟。请帮我这个代码。感谢您的帮助

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.receiverinterface);
    unlockScreen();
    alertDialogBuilder = new AlertDialog.Builder(
            context);
    alertDialogBuilder.setTitle("Alarm");
            alertDialogBuilder
            .setMessage("Stop Alarm")
            .setCancelable(false)
            .setPositiveButton("Dismiss", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    Ringtone r = EAlarmReceiver.r;
                    r.stop();
                    Toast.makeText(context.getApplicationContext(), "Alarm Stopped", Toast.LENGTH_LONG).show();
                    if(EAlarmReceiver.sms.length() > 10)
                    {
                        Intent openInterface = new Intent("proj.receiver.VIEWMESSAGE");
                        openInterface.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        context.startActivity(openInterface);
                    }
                    else
                    {
                        Intent openInterface = new Intent("proj.receiver.RECEIVERINTERFACE");
                        openInterface.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        context.startActivity(openInterface);
                    }
                }
            });
            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();
            // show it
            alertDialog.show();
}// end oncreate()

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    finish();
}

//unlock screen
public void unlockScreen() {
    //make the activity show even the screen is locked.
    Window window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
            + WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
            + WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
            + WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
}

1 个答案:

答案 0 :(得分:1)

从onPause()中删除finish()后尝试使用此代码。也发布完整的代码。

编辑: - 正如你所说的删除完成工作,这是你的第二个问题的解决方案。

1)复杂和临时解决方案: - 尝试添加一个布尔变量,你应该在对AlertDialog采取的操作上设置为true,如果在onResume中为true,则完成你的活动。每次你回到你的活动时OnResume都会打电话。

2)但如果我在你的位置,我会按照下面的方法。

创建一个类似于警报Dialog的布局。并将活动主题设置为清单中活动声明中的对话框,它将打开您的活动作为对话框。因此你不需要创建一个AlertDialog来处理动作,你可以添加解除按钮和所有。