【问题标题】:Dialog box not working - Android对话框不起作用 - Android
【发布时间】:2014-03-05 04:02:33
【问题描述】:

我在操作栏中创建了一个刷新项。当您单击它时,将显示一个对话框,要求检查互联网连接。问题是根本没有显示对话框。我想知道我的代码是否有问题。

private void Refresh() {

    if(IsparkLib.isInternetConnected(InquiryMainActivity.this)){
        nameOfMethod();

        AlertDialog.Builder dialog = new AlertDialog.Builder(InquiryMainActivity.this);
        dialog.setTitle("Are you sure you want to update?");
        dialog.setCancelable(true);
        dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int arg1) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(InquiryMainActivity.this,InquiryMainActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                startActivity(intent);
            }
        });
    }
    else{
        AlertDialog.Builder dialog = new AlertDialog.Builder(InquiryMainActivity.this);
        dialog.setTitle("Warning");
        dialog.setPositiveButton("OK",null);

        final TextView mes = new TextView(InquiryMainActivity.this);
        mes.setTextColor(Color.BLACK);
        mes.setText("Please check your internet connection");
        mes.setTextSize(20);


    }

【问题讨论】:

    标签: android dialog alert android-alertdialog


    【解决方案1】:

    您需要致电AlertDialog.show() 以在屏幕上显示警报,操作如下:

    AlertDialog alertDialog = dialog.create();
     // show it
    alertDialog.show();
    

    【讨论】:

    • 感谢它现在的工作,但问题是取消没有出现。 ://
    • @jajaja : 您遇到了什么错误,请发布带有问题的 logcat 结果以获得更多帮助
    • 谢谢我想通了。它应该是 setNegativeButton() 。为你投票! :)
    【解决方案2】:

    我想你没有打电话给dialog.show();。检查一次。

    在 else 块中尝试这样...

    else{
        AlertDialog.Builder dialog = new AlertDialog.Builder(InquiryMainActivity.this);
        dialog.setTitle("Warning");
        dialog.setPositiveButton("OK",null);
    
        final TextView mes = new TextView(InquiryMainActivity.this);
        mes.setTextColor(Color.BLACK);
        mes.setText("Please check your internet connection");
        mes.setTextSize(20);
    
        dialog.show();//=> here is the change
    }
    

    【讨论】:

      【解决方案3】:

      在ifelse 条件之后的两行下面添加这个..

      AlertDialog alertDialog = dialog.createDialog();
          alertDialog.show();
      

      你完成了你的代码......

      【讨论】:

      • 感谢它现在的工作,但问题是取消没有出现。 :
      • 谢谢我想通了。它应该是 setNegativeButton() 。为你投票! :)
      【解决方案4】:

      您忘记从 AlertDialog.Builder 对象创建 AlertDialog 实例并显示该对话框。

      另一件事,您尝试在if-else 方法中的if-else 条件中创建AlertDialog.Builder 对象,但您应该在if-else 条件之外创建,如下所示...

      private void Refresh() {
      
          AlertDialog.Builder dialog = new AlertDialog.Builder(InquiryMainActivity.this);
      
          if(IsparkLib.isInternetConnected(InquiryMainActivity.this)){
              nameOfMethod();
      
              dialog.setTitle("Are you sure you want to update?");
              dialog.setCancelable(true);
              dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
      
                  @Override
                  public void onClick(DialogInterface dialog, int arg1) {
                      // TODO Auto-generated method stub
                      Intent intent = new Intent(InquiryMainActivity.this,InquiryMainActivity.class);
                      intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                      startActivity(intent);
                  }
              });
      
          } else {
      
              dialog.setTitle("Warning");
              dialog.setPositiveButton("OK",null);
      
              final TextView mes = new TextView(InquiryMainActivity.this);
              mes.setTextColor(Color.BLACK);
              mes.setText("Please check your internet connection");
              mes.setTextSize(20);
      
          }
      
          AlertDialog alertDialog = dialog.createDialog();
          alertDialog.show();
      
      }
      

      更新:

      对于 Cancel 选项,您必须在对话框中添加另一个按钮,如下所示...

      dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int id) {
      
              //add your code
              dialog.dismiss();
      
          }
      });
      

      【讨论】:

      • 感谢它现在的工作,但问题是取消没有出现。 ://
      • 对于哪个对话框不起作用...Are you sure you want to update? 或Warning?
      • 我的意思是我想展示选择,确定和取消。它显示在我的代码中。
      • 谢谢我想通了。它应该是 setNegativeButton() 。为你投票! :)
      • 很高兴听到它,既然您的问题已经解决,那么您应该关闭这个问题并接受最合适的答案。
      【解决方案5】:

      编辑你的代码

      private void Refresh() {
      
          if(IsparkLib.isInternetConnected(InquiryMainActivity.this)){
              nameOfMethod();
      
              AlertDialog.Builder dialog = new AlertDialog.Builder(InquiryMainActivity.this);
              dialog.setTitle("Are you sure you want to update?");
              dialog.setCancelable(true);
              dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
      
                  @Override
                  public void onClick(DialogInterface dialog, int arg1) {
                      // TODO Auto-generated method stub
                      Intent intent = new Intent(InquiryMainActivity.this,InquiryMainActivity.class);
                      intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                      startActivity(intent);
                  }
              });
      
              dialog.show();
          }
          else{
              AlertDialog.Builder dialog = new AlertDialog.Builder(InquiryMainActivity.this);
              dialog.setTitle("Warning");
              dialog.setPositiveButton("OK",null);
      
              /*final TextView mes = new TextView(InquiryMainActivity.this);
              mes.setTextColor(Color.BLACK);
              mes.setText("Please check your internet connection");
              mes.setTextSize(20);*/  It's not necessary
      
              dialog.setMessage("Please check your internet connection");//
      
              dialog.show();
          }
      

      【讨论】:

      • 感谢它现在的工作,但问题是取消没有出现。 ://
      • @jajaja 使用此代码dialog.setCancelableOnTouchOutside(true);
      • @jajaja 你从 LOGCAT 得到的确切信息是什么
      • 谢谢我想通了。它应该是 setNegativeButton() 。为你投票! :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      相关资源
      最近更新 更多