Frage

I have an alarm in my application that notifies me every 10 minutes. It works fine but each time when the alarm notifies me, my application name will show as a box in the middle of the screen, and I can't press anything until I press the back button. It's really weird!

Here is my code:

    // Alert Code
    final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
    alertDialog.setTitle("Confirmation");
    alertDialog.setMessage("Are you sure you want to send this report?");
    run(gotDataS);

    // Timer Code
    pendingIntent = PendingIntent.getService(CreateNewForm_3.this, 0,
            new Intent(NewForm_3.this, MyAlarmService.class), 0);
    Send.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            alertDialog.setButton("OK",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,
                                        int which) {

                        Toast.makeText(NewForm_3.this, "Sent", 0)
                                .show();

                        long firstTime = SystemClock.elapsedRealtime();
                        am = (AlarmManager) getSystemService(ALARM_SERVICE);
                        am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                               firstTime + 10 * 1000, 30 * 1000, pendingIntent);
                        // firstTime Will be the current_time + ( 10 * 60 * 1000)  =)
                        // 10* 1000 will be (10 * 60 * 1000)
                        new Handler().postDelayed(new Runnable() {
                            public void run() {
                                bCancel.performClick();
                            }
                        }, (30 * 1000));
                        // ( 30 * 1000) will be firstTime + ( 2- duration)

                        Intent toRecentCases = new Intent(CreateNewForm_3.this,
                                LMPActivity.class);
                        startActivity(toRecentCases);
                    }
                });

            alertDialog.setButton2("No",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,
                            int which) {
                        // Here you can add functions
                    }
                });

            alertDialog.setIcon(android.R.drawable.ic_dialog_alert);
            alertDialog.show();
        }

    });


    bCancel.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // TODO Auto-generated method stub
            am.cancel(pendingIntent);
        }
    });

    //For Notification -3-
    final AlertDialog alertDialog3 = new AlertDialog.Builder(this).create();
    alertDialog3.setTitle("Confirmation");
    alertDialog3.setMessage("Are you sure you want to quite?");

    // Press cancel button it will move user to actvity p
    Cancelb.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            alertDialog3.setButton("OK",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,
                            int which) {

                        Intent toRecentCases = new Intent(NewForm_3.this,
                                                          LMPActivity.class);
                        startActivity(toRecentCases);
                    }
                });

            alertDialog3.setButton2("No",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,
                                int which) {
                            // Doing nothing!
                        }
                    });

            alertDialog3.setIcon(android.R.drawable.ic_dialog_alert);
            alertDialog3.show();
        }
    });

}

This is Showing Dialog Activity

public class ShowingDialog extends Activity {

    boolean b;
    String CancelMsg;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        //For Notification -1-
        final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
        alertDialog.setTitle("Confirmation");
        alertDialog.setMessage("Do you really want it?");

        // For Notification -2-
        final AlertDialog alertDialog2 = new AlertDialog.Builder(this).create();
        alertDialog2.setTitle("Confirmation");
        alertDialog2.setMessage("Are you sure you want it?");

        alertDialog.setButton("yes", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int which) {
               Intent intent= new Intent(ShowingDialog.this,MyPage.class);
               startActivity(intent);
           ;
           }
        });

        alertDialog.setButton2("no",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,
                        int which) {

                    alertDialog2.setButton("yes", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // Here you can add functions
                            // Sending a Message to server that the plaintiff found the case
                            // For Sending SMS with cancel Request
                            // Getting Case_ID + putting it inside CancelMsg
                               CancelMsg = "Case_ID cancel";
                            if (!b) {
                                try {
                                    sendSMS("5556", CancelMsg);
                                    Toast.makeText(ShowingDialog.this, "Sent", Toast.LENGTH_LONG)
                                            .show();
                                } catch (Exception e) {
                                    // TODO Auto-generated catch block
                                    Toast.makeText(ShowingDialog.this, e.getMessage(),
                                            Toast.LENGTH_LONG).show();
                                }
                            }
                        }
                    });

                    alertDialog2.setButton2("no", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // Here you can add functions
                            // Do nothing
                        }
                    });

                    alertDialog2.setIcon(android.R.drawable.ic_dialog_alert);
                    alertDialog2.show();
                }
            });

            alertDialog.setIcon(android.R.drawable.ic_dialog_alert);
            alertDialog.show();
        }

        public void sendSMS(String number, String msg) throws Exception {
            if (!b) {
                SmsManager smsManager = SmsManager.getDefault();
                smsManager.sendTextMessage(number, null, msg, null, null);
            }
            b = true;
        }
    }

In Manifest :

<activity
    android:name=".ShowingDialog"
    android:theme="@android:style/Theme.Dialog" />
War es hilfreich?

Lösung

It doesn't appear that you're overloading the back statement, so when you hit the back button you're traveling back up your Back Stack. The Android documentation has more information on this:

Tasks and Back Stack

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top