【问题标题】:Android: Exit application from custom dialogAndroid:从自定义对话框中退出应用程序
【发布时间】:2014-02-11 14:47:15
【问题描述】:

我为我的主要活动创建了一个自定义对话框,其中有两个按钮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();

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

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

是否可以通过在Exit 按钮上设置View.OnClickListenerAgeConfirmationDialog 类执行此操作?

【问题讨论】:

    标签: android dialog exit dismiss activity-finish


    【解决方案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
        }
    }
    

    【讨论】:

    • 正是我想要的!谢谢!
    【解决方案2】:

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

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

    【讨论】:

    • 考虑到我有扩展 Dialog 的 AgeConfirmationDialog 类,我该怎么做呢?
    • 完全不用你只需要输入我的代码并像我一样做。您还可以在这里看到我是如何在警报对话框中实现 xml 布局的。 stackoverflow.com/questions/21499100/…
    【解决方案3】:

    在退出按钮的 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();
            }
    

    您在这里基本上要做的是进入 mainactivity,这是您的开始活动,带有一些额外的键/值,并通过 getintent 在您的 mainactivity 中检查它。

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

    【讨论】:

    • 谢谢!但这不是比 Manu 的版本慢吗?
    • 它会重新启动你的活动......所以它有点慢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多