简体   繁体   中英

Not Show Alertdialog when onclick button

I created Alert dialogbox and its not showing when i click on button.And its crashing app. My code is below. What is wrong in my code?. Please Help me!!

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

            }
        });

And I get Error in below::

04-13 12:38:58.112: E/WindowManager(576): Activity com.example.testhopequeue.TestHopeQueue has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40585268 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 com.android.internal.policy.impl.PhoneWindow$DecorView@40585268 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)

I found in your code that you are finishing your activity by TestHopeQueue.this.finish(); in else part and then trying to show alert dialog in the activity that is already finished.

So, you are getting this error message.

you can call this method directly on button click like this.

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

}

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

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

        }

    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM