Android Can';无法从对话框关闭应用程序?

Android Can';无法从对话框关闭应用程序?,android,android-alertdialog,Android,Android Alertdialog,我有下一个代码,在那里我不能放置finish()当我按下“确定”按钮时(进入对话框) 怎么了?我的意思是,我不太明白,我是新手,但我只是不想要解决方案,如果可能的话,我也想要解释。可能的解释是这个函数不在你的活动类中。如果是这样的话,您将必须获取该类中的活动实例。例如,如果是mActivity,则使用 mActivity.finish()。如果是这样的话,您将必须获取该类中的活动实例。例如,如果是mActivity,则使用 mActivity.finish()?尝试系统。退出(0);使用对活动的

我有下一个代码,在那里我不能放置
finish()当我按下“确定”按钮时(进入
对话框)


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

可能的解释是这个函数不在你的活动类中。如果是这样的话,您将必须获取该类中的活动实例。例如,如果是mActivity,则使用
mActivity.finish()。如果是这样的话,您将必须获取该类中的活动实例。例如,如果是mActivity,则使用

mActivity.finish()?尝试系统。退出(0);使用对活动的侦听器回调

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

如果您想从对话框中关闭应用程序,您可以,但是finish()将只完成()当前活动?尝试系统。退出(0);使用对活动的侦听器回调

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

由于您有来自
活动的
上下文
,请将其转换为
活动
,并在其上调用
finish()

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

执行此操作时,您需要将
上下文设置为final,或将其设置为该类的成员变量。

因为您的
活动中有
上下文,所以将其转换为
活动
,并在其上调用
finish()

alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
        ((Activity)context).finish();
    }
执行此操作时,您需要将
上下文设置为final,或将其设置为该类的成员变量。

finish()只能完成活动。但如果您想关闭应用程序,则finsih()将无法工作。为此,必须调用此方法

alertDialog.dismiss();    
System.exit(0);
finish()只能完成活动。但如果要关闭应用程序,finsih()将无法工作。为此,必须调用此方法

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

解释为什么你“不能”把
finish()
放在那里。什么是/没有发生?错误?@codeMagic Yep,我得到错误:/“对于类型new DialogInterface,方法finish()未定义。OnClickListener(){}”PS:我不在我的“主”活动中。是的,那就是你的问题。您需要传递对活动的引用,或者创建对活动的回调
getActivity()。finish()
可能有效,这取决于您使用的类的类型。请解释为什么“不能”将
finish()
放在那里。什么是/没有发生?错误?@codeMagic Yep,我得到错误:/“对于类型new DialogInterface,方法finish()未定义。OnClickListener(){}”PS:我不在我的“主”活动中。是的,那就是你的问题。您需要传递对活动的引用,或者创建对activivty的回调
getActivity().finish()
可能会工作,这取决于您使用的类的类型。lol,我认为这是出于这个原因,但不是。将其放在下面:“AlertDialogManager.finish();”AlertDialogManager.java是类。我得到了这个错误:“类型AlertDialogManager的方法finish()未定义”。我试着完成一个方法,但我不明白它到底是什么。(而且不起作用)那么请把你的全班都发出去。哈哈,我想那是因为那个原因,但不是。将其放在下面:“AlertDialogManager.finish();”AlertDialogManager.java是类。我得到了这个错误:“类型AlertDialogManager的方法finish()未定义”。我试着完成一个方法,但我不明白它到底是什么。(而且不起作用)那么请把你的全班发出去。