【问题标题】:Not able to close app from Dialog in android无法从android中的对话框关闭应用程序
【发布时间】:2017-09-04 06:11:09
【问题描述】:

我想在应用程序中添加一项功能。我想在单击退出按钮时关闭应用程序,但我的按钮在对话框上,所以当我尝试使用 finish() 时不会这样做。我只是想关闭应用程序。请帮忙。

// 相同的代码

    if (v.getId() == R.id.imgLogout) {

        AlertDialog.Builder alertDialog = new AlertDialog.Builder(getContext());
        alertDialog.setMessage("Are you sure you want to exit?");
        alertDialog.setPositiveButton("YES", new OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                // session.logoutUser();
                finish();


            }
        });

// 但是完成在对话框中不起作用

【问题讨论】:

  • 你为什么要开始一个活动?你需要使用 finish() 来关闭应用程序。
  • 我没有看到你在使用finish()
  • 我使用完成但在对话框中没有工作
  • 在调用 finish() 之前必须确定你正在通过 dismiss() 关闭对话框

标签: android background exit-code


【解决方案1】:

首先关闭所有暂停的活动。比你可以关闭应用程序。你记得这个活动是最后一个。

if (v.getId() == R.id.imgLogout) {

    AlertDialog.Builder alertDialog = new AlertDialog.Builder(getContext());
    alertDialog.setMessage("Are you sure you want to exit?");
    alertDialog.setPositiveButton("YES", new OnClickListener() {

     public void onClick(DialogInterface dialog, int which) {                
           finish();
          // context.finish();  if use in fragment
       }
   });

【讨论】:

  • 如果使用片段而不是使用 context.finish();
【解决方案2】:

首先在您的对话框类中传递调用者活动的上下文,例如 MainActivit.class 上下文

现在先关闭对话框

//为了避免窗口泄漏,因为在销毁活动时它的上下文也会消失。

 dialog.dismiss();

然后

((Activity) context).finish();

【讨论】:

    【解决方案3】:

    关闭应用的一个非常简单的方法是:

    Intent intent = new Intent(Intent.ACTION_MAIN);
                        intent.addCategory(Intent.CATEGORY_HOME);
                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(intent);
                        finish();
    

    所以在你的情况下试试这个:

     if (v.getId() == R.id.imgLogout) {
    
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(getContext());
        alertDialog.setMessage("Are you sure you want to exit?");
        alertDialog.setPositiveButton("YES", new OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                // session.logoutUser();
                Intent intent = new Intent(Intent.ACTION_MAIN);
                        intent.addCategory(Intent.CATEGORY_HOME);
                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(intent);
                        finish();
    
    
            }
        });
    

    【讨论】:

      猜你喜欢
      • 2012-02-01
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多