Мне нравится отображать одно диалоговое окно в событии клика другого диалогового окна. Мой код приведен ниже. Но он показывает [Синтаксис ошибки 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 }
Это действительно помогло бы, если бы вы показали, где произошла ошибка (и правильно отформатирован код), но это, безусловно, выглядит как одна из ваших проблем:
if(PhoneModels[item]=="Pub Date")
{@Override
protected Dialog onCreateDialog(int id)
Вы не можете объявить метод внутри тела if
, условно переопределяя.
Вы также пытаетесь объявить закрытую переменную в методе, который также недействителен.
Трудно понять, что именно должен делать ваш код, если честно, и создание одного анонимного внутреннего класса внутри другого действительно не помогает на этом фронте. Можете ли вы извлечь ваши анонимные внутренние классы в "нормальные" классы (возможно, все еще внутренние классы, если это помогает)?
Кроме того, обратите внимание, что сравнение строк с использованием ==
в Java почти всегда неверно. Это будет сравнение ссылок, а не проверка того, равны ли строки.
Вы пытаетесь определить метод внутри блока. Это невозможно в Java.
Видеть:
if(PhoneModels[item]=="Pub Date")
{
@Override
protected Dialog onCreateDialog ... // this is not allowed!