Проблема в диалоговом окне Создание в событии щелчка другого диалогового окна

1

Мне нравится отображать одно диалоговое окно в событии клика другого диалогового окна. Мой код приведен ниже. Но он показывает [Синтаксис ошибки error- на токене "); Ожидается, Синтаксическая ошибка на токене ")"; Ожидается. Может кто-нибудь очистить эту проблему

final CharSequence [] PhoneModels = {"Дата Pub", "Catagory", "Amount"}; final AlertDialog.Builder alt_bld = new AlertDialog.Builder (это); alt_bld.setTitle("Выбрать опцию");

      alt_bld.setSingleChoiceItems(PhoneModels, -1, new DialogInterface.OnClickListener() {

      public void onClick(DialogInterface dialog, int item) {

      //UpdateDisplay();
          //   dialog.dismiss();

          getApplicationContext();
          if(PhoneModels[item]=="Pub Date")
               {@Override
              protected Dialog onCreateDialog(int id)
               {
                   Calendar c = Calendar.getInstance();
                   int cyear = c.get(Calendar.YEAR);
                   int cmonth = c.get(Calendar.MONTH);
                   int cday = c.get(Calendar.DAY_OF_MONTH);
                   switch (id) {
                   case DATE_DIALOG_ID:
                   return new DatePickerDialog(this,  mDateSetListener,  cyear, cmonth, cday);
                   }
                   return null;
                   }
               private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
                  // onDateSet method
                  public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                  String date_selected = String.valueOf(monthOfYear+1)+" /"+String.valueOf(dayOfMonth)+" /"+String.valueOf(year);
                  Toast.makeText(ExampleApp.this, "Selected Date is ="+date_selected, Toast.LENGTH_SHORT).show();
                  }
                  };

              Toast.makeText(getApplicationContext(), " will be here", Toast.LENGTH_SHORT).show();
                 }
          else if(PhoneModels[item]=="Catagory")
                     {Toast.makeText(getApplicationContext(), " will not be here", Toast.LENGTH_SHORT).show();
                        }
          else
                       {Toast.makeText(getApplicationContext(), "It will be here", Toast.LENGTH_SHORT).show();
                          }
      }
      });

      AlertDialog alert = alt_bld.create();
      alert.show();

    // display UI

}
Теги:
alertdialog

2 ответа

1

Это действительно помогло бы, если бы вы показали, где произошла ошибка (и правильно отформатирован код), но это, безусловно, выглядит как одна из ваших проблем:

if(PhoneModels[item]=="Pub Date")
{@Override
    protected Dialog onCreateDialog(int id)

Вы не можете объявить метод внутри тела if, условно переопределяя.

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

Трудно понять, что именно должен делать ваш код, если честно, и создание одного анонимного внутреннего класса внутри другого действительно не помогает на этом фронте. Можете ли вы извлечь ваши анонимные внутренние классы в "нормальные" классы (возможно, все еще внутренние классы, если это помогает)?

Кроме того, обратите внимание, что сравнение строк с использованием == в Java почти всегда неверно. Это будет сравнение ссылок, а не проверка того, равны ли строки.

  • 0
    Вы абсолютно правы, это была моя ошибка в коде. Но есть ли другой способ отобразить диалоговое окно оповещения о выборе даты в событии щелчка другого диалогового окна оповещения?
  • 0
    @bejoy: Каждый раз, когда вы используете анонимные внутренние классы, есть альтернатива. Не совсем понятно, что вы пытаетесь сделать, или почему у вас есть недопустимая Java как попытка достичь этого ...
Показать ещё 6 комментариев
0

Вы пытаетесь определить метод внутри блока. Это невозможно в Java.

Видеть:

if(PhoneModels[item]=="Pub Date")
{
  @Override
  protected Dialog onCreateDialog ... // this is not allowed!
  • 0
    Ява, а не ЯВА.
  • 0
    @ Джон, почему не JAVA?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню