@SimpleName

Не удается в фрагменте получить методы из интерфейса. Как это можно исправить?

Почему при попытки получить методы из интерфейса, пишет Cannot resolve method 'isProduct()' и Cannot resolve method 'getMenuTitle()'.
ourMenuItems я прописываю как ArrayList
private final ArrayList<MenuPosition> ourMenuItems = new ArrayList<>();

В интерефесе все есть, однако в фрагменте все равно не получается их получить. Как это можно исправить?
Вот код интерфейса MenuPosition

public interface MenuPosition {

public String getIcon();

public int getId();

public String getImageUrl();

public String getMenuTitle();

public boolean isProduct();
}
Скрин
5cb38372dbb8a768568189.png
Код
@Override
    public void onItemClick(View object, int n2) {
        try {
            object = (View) this.ourMenuItems.get(n2);
            if (!object.isProduct()) {
                if (this.materialFragmentActivityCallback != null) {
                    object = CatalogFragment.instance(object.getId(), object.getMenuTitle());
                    this.materialFragmentActivityCallback.beginFragmentManagerTransaction((Fragment)object, true);
                    return;
                }
            } else {
                Intent intent = new Intent(getActivity(),ProductActivity.class);
                intent.putExtra("PRODUCT_ID", object.getId());
                this.startActivity(intent);
            }
            return;
        }
        catch (Exception exception) {
            return;
        }
    }

  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Ты же сам кастуешь объект из списка ко View. Даже если убрать вызовы, и скомпилировать, это всё равно упадет с ClassCastException. В джаве статическая типизация.
Что за экономия на переменных? То что ты назвал переменную object, не значит, что ты можешь в неё пихать всё что угодно. Выдели нормальные переменные соответствующих типов, и будет тебе щастье.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы