Страницы

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

понедельник, 24 февраля 2020 г.

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

#java #android #ооп


Не работает 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


Как решить эту проблему?
    


Ответы

Ответ 1



Вы не верно указали сигнатуру метода (тип возвращаемого значения, имя метода, список аргументов(их кол-во, порядок и типы)) и создали новый, не существующий в классе метод, после чего сказали, что этот метод якобы существует в супер-классе. IDE заметила вашу ошибку и сказала об этом. На этом этапе вам надо было заглянуть в доки и убедиться, что в классе DialogFragment нет метода Dialog onCreateDialog(int id). Зато есть Dialog onCreateDialog(Bundle savedInstanceState) Итого вы допустили ошибку в списке аргументов метода, а именно в типе аргумента, написав int вместо Bundle.

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

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