В MainActivity у меня есть интерфейс
public interface MyListener{
void myMethod(boolean done);
}
но когда я пытаюсь забросить onCreate
myListener = (MyListener) this;
Получил java.lang.ClassCastException
У меня также есть переменная в MainActivity:
private MyListener mylistener;
Что я должен здесь исправить?




Ваш 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, я должен реализовать интерфейс во фрагменте?
проверьте здесь, он не реализует: stackoverflow.com/questions/51641902/…
Теоретически вы хотите изменить представления MainActivity не во фрагменте, но если вы хотите это сделать, посмотрите мой ответ и сделайте наоборот arround
но я хочу обратного, перезвонить из MainActivity к фрагменту, а не фрагменту к MainActivity :) способ arround дает мне ошибку
Убедитесь, что ваш
MainActivityреализует ваш интерфейсMyListener