Страницы

Поиск по вопросам

четверг, 2 мая 2019 г.

error: method does not override or implement a method from a supertype.

Не работает alertdialog во фрагменте
Код fmonday.java (P.S.: Чтобы код не получился слишком длинным, я удалил некоторые куски где используется loader):
public class fmonday extends Fragment implements LoaderManager.LoaderCallbacks { final int DIALOG_ITEMS = 1; final CharSequence[] items = {"1", "2", "3"}; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); }
@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

Комментариев нет:

Отправить комментарий