无法从Dialog关闭应用程序?

时间:2014-10-29 23:31:52

标签: android android-alertdialog

我有下一个代码,当我按下" OK"时,我无法放置finish(); Button(进入Dialog)。

public void showAlertDialog(Context context, String title, String message,
    Boolean status) {
    AlertDialog alertDialog = new AlertDialog.Builder(context).create();

    // Setting Dialog Title
    alertDialog.setTitle(title);

    // Setting Dialog Message
    alertDialog.setMessage(message);

    if(status != null)
        // Setting alert dialog icon
       alertDialog.setIcon((status) ? R.drawable.success : R.drawable.fail);

    // Setting OK Button
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
        }

    });

    // Showing Alert Message
    alertDialog.show();

}   
}

它错了什么?我的意思是,我不太了解,我是新手,但我只是不想要解决方案,如果可能的话,我也想要解释。

4 个答案:

答案 0 :(得分:3)

finish()只能完成Activity.But你要关闭你的应用程序然后finish()将无法正常工作。为此你必须调用这个方法。

alertDialog.dismiss();    
System.exit(0);

答案 1 :(得分:1)

可能的解释是此功能不在您的活动类中。如果是这样,您将必须在此课程中获取您的活动实例。例如,如果它是mActivity那么使用 你的节目功能mActivity.finish()

答案 2 :(得分:1)

如果你想从一个对话框中关闭一个应用程序,但是finish()只会完成()当前的Activity?试试System.exit(0);用一个监听器回调Activity。

interface Listener{
    onOK();
}
Dialog{
    onClick(){
        Listener.onOK();
    }
}
Activity implements Listener{
    onOK(){
        this.finish();
        System.exit(0);
    }
}

答案 3 :(得分:1)

由于您拥有Context中的Activity,请将其转换为Activity并在其上调用finish()

alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
        ((Activity)context).finish();
    }

这样做你需要使context成为最终版,或者使其成为这个类的成员变量。