Проблема в диалоговом окне Создание в событии щелчка другого диалогового окна - PullRequest
1 голос
/ 14 июля 2011

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

final CharSequence [] PhoneModels = {"Дата публикации", "Catagory", "Количество"};final AlertDialog.Builder alt_bld = новый 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

}

Ответы [ 2 ]

1 голос
/ 14 июля 2011

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

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

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

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

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

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

0 голосов
/ 14 июля 2011

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

См .:

if(PhoneModels[item]=="Pub Date")
{
  @Override
  protected Dialog onCreateDialog ... // this is not allowed!
...