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

时间:2014-02-11 14:47:15

标签: android dialog exit dismiss activity-finish

我使用两个按钮ExitContinue为我的主要活动创建了自定义对话框

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();

每次启动主要活动时,都会弹出此自定义对话框,并要求提供年龄确认。我不希望用户使用后退按钮关闭此对话框,因此我在setCancelable(false)方法中添加了onCreate。在选中复选框之前,Continue按钮处于禁用状态。如果按下Continue按钮,将关闭对话框 - 使用setOnClickListener

问题是,当按下Exit按钮时,我不知道如何解除该自定义对话框并完成主要活动

是否可以通过在AgeConfirmationDialog按钮上设置View.OnClickListenerExit课程执行此操作?

3 个答案:

答案 0 :(得分:1)

将代码更改为以下内容:

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
    }
}

答案 1 :(得分:0)

  

我不知道如何解雇该自定义对话框并完成主要操作   按下退出按钮时的活动。

然后你只需要输入你的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();

答案 2 :(得分:0)

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

            Intent intent = new Intent(getApplicationContext(), MainActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.putExtra("EXIT", true);
            startActivity(intent);  

您的MainActivity会执行以下操作:

        if (getIntent().getBooleanExtra("EXIT", false)) {
        finish();
        }

你基本上在这里做的是主要活动,这是你的一些关键/值额外的开始活动,并通过getintent在你的主要活动中检查它。

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