В андроиде второй раз вызываю диалог оповещения он принудительно закрывается - PullRequest
0 голосов
/ 01 мая 2011

У меня есть некоторый код для использования диалогового окна с предупреждением для добавления материала в базу данных. это работает, но только в первый раз, когда я его использую. Во второй раз, когда я нажимаю кнопку, чтобы открыть диалоговое окно с предупреждением, оно принудительно закрывается.

final AlertDialog.Builder alert1 = new AlertDialog.Builder(EmergencyDb.this);
        final AlertDialog.Builder alert2 = new AlertDialog.Builder(EmergencyDb.this);
        alert1.setTitle("New Contact");
        alert1.setMessage("Name: ");
        alert2.setTitle("New Contact");
        alert2.setMessage("Phone Number: ");

        final EditText input1 = new EditText(EmergencyDb.this);
        final EditText input2 = new EditText(EmergencyDb.this);
        final int PHONE_TYPE = 3;
        input2.setInputType(PHONE_TYPE);
        alert1.setView(input1);
        alert2.setView(input2);
        alert1.setPositiveButton("Next", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                name = input1.getText().toString();
                alert2.show();

                  }
                });

        alert2.setPositiveButton("Add", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                phoneNum = input2.getText().toString();
                SQLiteDatabase db = openHelper.getReadableDatabase();
                openHelper.addContact(name, phoneNum, db);
                Cursor cursor = null;
                try {
                    cursor = getContactCursor();
                    SimpleCursorAdapter adapter = new SimpleCursorAdapter(EmergencyDb.this,
                            R.layout.row, cursor, COLUMNS, VIEWS);
                    setListAdapter(adapter);
                }
                catch (Exception ex){
                    //... error handling
                }

                  }
                });

        alert1.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
              public void onClick(DialogInterface dialog, int whichButton) {
                // Canceled.
              }
            });

        alert2.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
              public void onClick(DialogInterface dialog, int whichButton) {
                // Canceled.
              }
            });
        final Button addButton = (Button) findViewById(R.id.addButton);

        addButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                alert1.show();

            }
        });

Ответы [ 2 ]

0 голосов
/ 02 мая 2011

Вам, вероятно, нужно dismiss() или cancel() предупреждений, прежде чем показывать другое, иначе все может запутаться.Добавьте вызов к dialog.cancel() в методах onClick.

alert1.setPositiveButton("Next", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                name = input1.getText().toString();
                dialog.cancel(); alert2.show();

                  }
                });

Дайте мне знать, если это работает.

0 голосов
/ 02 мая 2011

Может, проблема в модификаторе окончательного доступа? Однако, проверьте ваш logcat, чтобы найти ответ. Удачи!

...