2013-04-13 181 views
0

我创建了Alert对话框,当我点击button.And它的崩溃应用程序时,它没有显示。我的代码如下。我的代码有什么问题?请帮帮我!!当点击按钮时不显示Alertdialog

backBtn.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
         TestHopeQueue.this); 

       // set title 
       alertDialogBuilder.setTitle("Remove Download"); 

       // set dialog message 
       alertDialogBuilder 
         .setMessage("Click yes to exit!") 
         .setCancelable(false) 
         .setPositiveButton("Yes", 
           new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, 
              int id) { 

             for (int k = 0; k < trlist.size(); k++) { 
              if (trlist.get(k) != null) { 
               View v13 = linearlayout 
                 .getChildAt(k); 
               TextProgressBar pr = (TextProgressBar) v13 
                 .findViewById(R.id.progressBar); 

               if (pr.getProgress() < 100) { 

                trlist.get(k).interrupt(); 
                trlist.set(k, null); 
                ViewVideoDelete(k); 
                Button btnDownButton = (Button) v13 
                  .findViewById(R.id.btnDownload); 
                btnDownButton 
                  .setVisibility(View.VISIBLE); 

                pr.setProgress(0); 
                pr.invalidate(); 
                pr.setText("" + 0 + "%"); 

                Button btnDelete = (Button) v13 
                  .findViewById(R.id.btnDelete); 
                btnDelete 
                  .setVisibility(View.GONE); 
                downloadqueuelist.remove(0); 
                if (k % 2 == 0) { 
                 v13.setBackgroundColor(Color 
                   .parseColor("#f8f8ff")); 
                 // convertView.setBackgroundResource(R.drawable.whitebackground); 
                } else { 
                 v13.setBackgroundColor(Color 
                   .parseColor("#DCDCDC")); 
                 // convertView.setBackgroundResource(R.drawable.greybackground); 
                } 

               } 
              } else { 
               TestHopeQueue.this.finish(); 
              } 

             } 

            } 
           }) 
         .setNegativeButton("No", 
           new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, 
              int id) { 
             // if this button is clicked, just close 
             // the dialog box and do nothing 
             dialog.cancel(); 
            } 
           }); 


       //alertDialog.show(); 

       for (int k = 0; k < trlist.size(); k++) { 

        if (trlist.get(k)!= null) { 
         Log.v("log_tag"," Alert Dialog "); 

         break; 
        } else { 
         TestHopeQueue.this.finish(); 
        } 

       } 
       AlertDialog alertDialog = new AlertDialog.Builder(TestHopeQueue.this).create(); 
       //AlertDialog alertDialog = alertDialogBuilder.create(); 
       alertDialog.show(); 

      } 
     }); 

而且我得到的错误如下::

04-13 12:38:58.112: E/WindowManager(576): Activity com.example.testhopequeue.TestHopeQueue has leaked window [email protected] that was originally added here 
04-13 12:38:58.112: E/WindowManager(576): android.view.WindowLeaked: Activity com.example.testhopequeue.TestHopeQueue has leaked window [email protected] that was originally added here 
04-13 12:38:58.112: E/WindowManager(576): at android.view.ViewRoot.<init>(ViewRoot.java:258) 
04-13 12:38:58.112: E/WindowManager(576): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) 
04-13 12:38:58.112: E/WindowManager(576): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 
04-13 12:38:58.112: E/WindowManager(576): at android.view.Window$LocalWindowManager.addView(Window.java:424) 
04-13 12:38:58.112: E/WindowManager(576): at android.app.Dialog.show(Dialog.java:241) 
04-13 12:38:58.112: E/WindowManager(576): at com.example.testhopequeue.TestHopeQueue$1.onClick(TestHopeQueue.java:180) 
04-13 12:38:58.112: E/WindowManager(576): at android.view.View.performClick(View.java:2485) 
04-13 12:38:58.112: E/WindowManager(576): at android.view.View$PerformClick.run(View.java:9080) 
04-13 12:38:58.112: E/WindowManager(576): at android.os.Handler.handleCallback(Handler.java:587) 
04-13 12:38:58.112: E/WindowManager(576): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-13 12:38:58.112: E/WindowManager(576): at android.os.Looper.loop(Looper.java:130) 
04-13 12:38:58.112: E/WindowManager(576): at android.app.ActivityThread.main(ActivityThread.java:3683) 
04-13 12:38:58.112: E/WindowManager(576): at java.lang.reflect.Method.invokeNative(Native Method) 
04-13 12:38:58.112: E/WindowManager(576): at java.lang.reflect.Method.invoke(Method.java:507) 
04-13 12:38:58.112: E/WindowManager(576): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
04-13 12:38:58.112: E/WindowManager(576): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
04-13 12:38:58.112: E/WindowManager(576): at dalvik.system.NativeStart.main(Native Method) 

回答

0

我在你的代码,你被TestHopeQueue.this.finish();在其他部分完成的活动,然后试图显示警告对话框中是活动的发现已经完成了。

所以,你得到这个错误信息。

+0

谢谢Dipali回答问题,但是当把完成方法的情况! – crickpatel0024

+0

当您按下后退按钮时,对话框被解除,然后按下后退按钮活动从堆栈中弹出并销毁。堆栈中的以前的活动需要关注。 – Raghunandan

0

你可以像这样直接在按钮上点击这个方法。

backBtn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
       AlertBoxShow(); 

       } 

    // AlertBoxShow() method definition here 
    public void AlertBoxShow(){ 
    AlertDialog.Builder alt_bld = new AlertDialog.Builder(this); 
    alt_bld.setMessage("Do you want to close this application ?") 
    .setCancelable(false) 
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
     finish(); 
     } 
}) 
     .setNegativeButton("No", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
    // Action for 'NO' Button 
     dialog.cancel(); 
     } 
     }); 
      AlertDialog alert = alt_bld.create(); 
      // Title for AlertDialog 
      alert.setTitle("AlertDialogExample"); 
     // Icon for AlertDialog 
     alert.setIcon(R.drawable.ic_launcher); 
      alert.show(); 
    } 

}

+0

感谢Gunjan,但我想要更多的条件添加在按钮点击是按钮。 – crickpatel0024

+0

删除你的其他条件,希望你的代码现在不会得到错误.....删除这一个其他人{ TestHopeQueue.this.finish(); } –

0

同时您正在执行按钮1的两个动作onclick)显示dailog 2)内环你完成你的活动,这显示对话框,导致错误之前完成您的活动。

+0

感谢您回复我的问题!出侧循环中获取错误! – crickpatel0024

0
Try This Using This Code You Get Alert Dialog.. 
==================================main Activity.java 
package com.example.sample; 

    import android.os.Bundle; 
    import android.app.Activity; 
    import android.app.AlertDialog; 
    import android.content.Context; 
    import android.content.DialogInterface; 
    import android.view.Menu; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.widget.Button; 
    import android.widget.TextView; 
    import android.widget.Toast; 

    public class MainActivity extends Activity { 
     Button b1; 
     final Context context = this; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      b1 = (Button) findViewById(R.id.b1); 

      b1.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View arg0) { 
        ShowDialog(); 
       } 

      }); 
     } 
     public void ShowDialog() 
     { 

      AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
        context); 

      // set title 
      alertDialogBuilder.setTitle("Your Title"); 

      // set dialog message 
      alertDialogBuilder 
        .setMessage("Click yes to exit!") 
        .setCancelable(false) 
        .setPositiveButton("Yes", 
          new DialogInterface.OnClickListener() { 
           public void onClick(DialogInterface dialog, 
             int id) { 
            // if this button is clicked, close 
            // current activity 
            MainActivity.this.finish(); 
           } 
          }) 
        .setNegativeButton("No", 
          new DialogInterface.OnClickListener() { 
           public void onClick(DialogInterface dialog, 
             int id) { 
            // if this button is clicked, just close 
            // the dialog box and do nothing 
            dialog.cancel(); 
           } 
          }); 

      // create alert dialog 
      AlertDialog alertDialog = alertDialogBuilder.create(); 

      // show it 
      alertDialog.show(); 

     } 

    }