MainActivity не может транслировать интерфейс

В MainActivity у меня есть интерфейс

   public interface MyListener{
        void myMethod(boolean done);
    }

но когда я пытаюсь забросить onCreate

myListener = (MyListener) this;

Получил java.lang.ClassCastException

У меня также есть переменная в MainActivity:

private MyListener mylistener;

Что я должен здесь исправить?

Убедитесь, что ваш MainActivity реализует ваш интерфейс MyListener

AskNilesh 04.10.2018 10:33
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
636
1

Ответы 1

Ваш MainActivity должен реализовать свой interface, если вы хотите:

myListener = (MyListener) this;

Итак, ваш код должен быть таким

public class MainActivity extends AppCompatActivity implements MyListener {}

РЕДАКТИРОВАТЬ

В вашем Fragment добавьте это:

public class MyFragment extends Fragment {

private MyListener mListener;

@Override
    public void onAttach(Context context) {
        super.onAttach(context);
        try {
            mListener = (MyListener) context;
        } catch (ClassCastException e) {
            throw new ClassCastException(context.toString()
                    + " must implement MyListener");
        }
    }

Тогда в вашем MainActivity

public class MainActivity extends AppCompatActivity implements MyListener {
...
@Override
    public void myMethod(Boolean done) {
        //Stuff with this 
    }

если Android Studio сгенерировал интерфейс во фрагменте, нам не нужно реализовывать интерфейс во фрагменте, но в MainActivity - да, поэтому, если я сгенерирую интерфейс в MainActivity, я должен реализовать интерфейс во фрагменте?

purcha 04.10.2018 10:39

проверьте здесь, он не реализует: stackoverflow.com/questions/51641902/…

purcha 04.10.2018 10:42

Теоретически вы хотите изменить представления MainActivity не во фрагменте, но если вы хотите это сделать, посмотрите мой ответ и сделайте наоборот arround

Skizo-ozᴉʞS 04.10.2018 10:45

но я хочу обратного, перезвонить из MainActivity к фрагменту, а не фрагменту к MainActivity :) способ arround дает мне ошибку

purcha 04.10.2018 10:47

Другие вопросы по теме