Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:从自定义对话框退出应用程序_Android_Dialog_Exit_Dismiss_Activity Finish - Fatal编程技术网

Android:从自定义对话框退出应用程序

Android:从自定义对话框退出应用程序,android,dialog,exit,dismiss,activity-finish,Android,Dialog,Exit,Dismiss,Activity Finish,我为我的主要活动创建了一个自定义对话框,有两个按钮,退出和继续: public class AgeConfirmationDialog extends Dialog { public AgeConfirmationDialog(Activity a) { super(a); } protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedIns

我为我的主要活动创建了一个自定义对话框,有两个按钮,
退出
继续

public class AgeConfirmationDialog extends Dialog {

    public AgeConfirmationDialog(Activity a) {
        super(a);    
    }

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setCancelable(false);
        setContentView(R.layout.age_dialog);
        // .....
        // Find the View objects; checkboxes and buttons logic; SharedPreferences
        // .....
    }
    // .....
}
以下是从MainActivity启动对话框的方式:

AgeConfirmationDialog d = new AgeConfirmationDialog(this);
d.show();
每次启动主活动时,都会弹出此自定义对话框,并要求确认年龄。我不希望用户使用后退按钮关闭此对话框,因此我在
onCreate
方法中添加了
setCancelable(false)
继续
按钮被禁用,直到选中复选框。如果按下
继续
按钮,该对话框将被取消-使用
setOnClickListener

问题是当按下退出按钮时,我不知道如何关闭自定义对话框并完成主要活动

是否可以通过在
退出
按钮上设置
视图,在
年龄确认对话框
类中执行此操作

我不知道如何关闭自定义对话框并完成主对话框 按下退出按钮时的活动

然后您只需输入ExitButton Click Listener:

finish();
例如:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setPositiveButton("Exit", new DialogInterface.OnClickListener()
        {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                finish();
            }
        }).create().show();

在退出按钮的onclicklistener中执行某些操作。比如:

            Intent intent = new Intent(getApplicationContext(), MainActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.putExtra("EXIT", true);
            startActivity(intent);  
你的主要活动是:

        if (getIntent().getBooleanExtra("EXIT", false)) {
        finish();
        }
这里基本上要做的是转到mainactivity,这是一个带有一些额外键/值的开始活动,并通过getintent在mainactivity中检查它


这是退出应用程序的最佳过程,您也可以在注销时使用它。

将代码更改为类似以下内容:

public class AgeConfirmationDialog extends Dialog {
    Activity mainActivity;

    public AgeConfirmationDialog(Activity a) {
        super(a);    
        this.mainActivity = a;
    }

    //in onClick method of finish-button
    public void onFinishClick(View v) {
        mainActivity.finish(); //finish activity
    }
}

考虑到我有一个扩展Dialog的AgeConfirmationDialog类,我怎么能做到这一点呢?一点也不,你只需要把我的代码放进去,然后像我那样做。您还可以在这里看到我是如何在警报对话框中实现xml布局的。正是我要找的!非常感谢。非常感谢。但这不是比Manu的版本慢吗?它会重新启动你的活动。。。所以它稍微慢一点