【问题标题】:MainActivity can't cast interfaceMainActivity 无法转换接口
【发布时间】:2025-12-20 07:30:11
【问题描述】:

MainActivity我有接口

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

但是当我尝试投射onCreate

myListener = (MyListener) this;

我收到了java.lang.ClassCastException

我在 MainActivity 中也有变量:

private MyListener mylistener;

我应该在这里解决什么?

【问题讨论】:

  • 确保您的MainActivity 实现了您的MyListener 接口

标签: java android interface callback


【解决方案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 在 Fragment 中生成接口,我们不需要在 Fragment 中实现接口,而是在 MainActivity 中实现 - 是的,所以如果我在 MainActivity 中生成接口,我应该在 Fragment 中实现接口?
  • 检查这里,他没有实现:*.com/questions/51641902/…
  • 理论上您想修改 MainActivity 上的视图而不是 Fragment,但如果您想这样做,请参阅我的回答并以相反的方式进行
  • 但我想要相反,从 MainActivity 回调到片段,而不是片段到 MainActivity :) 方式 arround 给我错误