проблем с диалогов прозорец при излизане в android

разработих приложение, което има една дейност и ще кодирам при натискане на изход, искам да покажа диалогов прозорец с три бутона, когато потребителят натисне бутона за връщане назад, един за „да“, втори за „дом“ и трети за „изход“ и Направих го по метода на обратно натискане, но имам някакъв проблем - не показва диалогов прозорец, ако се показва, тогава диалоговият прозорец просто трепти, така че каква е причината за това

моят код е

public class MainActivity extends Activity {

private AlertDialog alertDialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

}

@Override
public void onBackPressed() {
    super.onBackPressed();
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
            MainActivity.this);

    alertDialogBuilder.setTitle("Alert Dialogue Box");

    alertDialogBuilder.setMessage("Are you sure?");

    alertDialogBuilder.setPositiveButton("Yes",
            new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int id) {

                    Toast.makeText(getApplicationContext(),
                            "Positive", 1000).show();

                }

            });

    alertDialogBuilder.setNegativeButton("No",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {

                    dialog.cancel();

                    Toast.makeText(getApplicationContext(),
                            "You chose a negative answer",

                            Toast.LENGTH_LONG).show();

                }

            });

    alertDialogBuilder.setNeutralButton("Exit the app",
            new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int id) {

                    Toast.makeText(getApplicationContext(), "exit",
                            1000).show();
                    MainActivity.this.finish();

                }

            });

    AlertDialog alertDialog = alertDialogBuilder.create();

    alertDialog.show();

}

person Community    schedule 28.02.2014    source източник
comment
коментар super.onBackPressed(); и го проверете отново.   -  person Amol Sawant 96 Kuli    schedule 28.02.2014


Отговори (2)


Кодът, който сте написали, е добър. Но тези редове водят до Exception..

 super.onBackPressed();

което завършва вашето Activity, така че вашето Dialog се отхвърля с изключение за изтичане на прозорец. Така че премахнете този ред от вашия код.

Добавете този ред, за да отмените докосването отвън.

alertDialog.setCanceledOnTouchOutside(false);
person kalyan pvs    schedule 28.02.2014
comment
имам още един проблем относно това, когато щракна върху извън диалоговия прозорец, диалоговият прозорец се отхвърля... - person ; 28.02.2014

можете да зададете AlertDialog.Builder в диалоговия прозорец като:

Dialog dia = new AlertDialog.Builder(this)

и използвайте dia, за да използвате SetCanceledOnTouchOutside метод

person Oubaida AlQuraan    schedule 04.04.2015