Не работает alertdialog во фрагменте
Код fmonday.java (P.S.: Чтобы код не получился слишком длинным, я удалил некоторые куски где используется loader):
public class fmonday extends Fragment implements LoaderManager.LoaderCallbacks
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fmonday, container, false);
Button button12 = (Button) rootView.findViewById(R.id.button12);
button12.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
getActivity().showDialog(DIALOG_ITEMS);
}
});
}
@Override //Здесь ошибка
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_ITEMS:
AlertDialog.Builder adb = new AlertDialog.Builder(getActivity());
adb.setTitle("Adding class");
adb.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getActivity().getApplicationContext(),
"Your choice: " + items[item],
Toast.LENGTH_SHORT).show();
}
});
adb.setCancelable(false);
return adb.create();
default:
return null;
}
}
logcat:
Error:(88, 5) error: method does not override or implement a method from a supertype
Как решить эту проблему?
Ответ
Вы не верно указали сигнатуру метода (тип возвращаемого значения, имя метода, список аргументов(их кол-во, порядок и типы)) и создали новый, не существующий в классе метод, после чего сказали, что этот метод якобы существует в супер-классе.
IDE заметила вашу ошибку и сказала об этом.
На этом этапе вам надо было заглянуть в доки и убедиться, что в классе DialogFragment нет метода Dialog onCreateDialog(int id)
Зато есть Dialog onCreateDialog(Bundle savedInstanceState)
Итого вы допустили ошибку в списке аргументов метода, а именно в типе аргумента, написав int вместо Bundle
Комментариев нет:
Отправить комментарий