有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓 Java。lang.ClassCastException:无法将活动强制转换到接口

我试图使用父活动实现的接口从另一个片段“B”调用一个片段“a”中名为“change_color()”的方法。当我尝试将父活动强制转换到接口的实例时,我得到了这个ClassCastException

这是片段“B”的片段

    Public class B extends Fragment implements View.onClickListener{
        public attendance_to_history var;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_attendance_take, 
    container, false);
        return rootView;
    }

    public void onActivityCreated(Bundle savedInstanceState){
                super.onActivityCreated(savedInstanceState);
                var = (attendance_to_history) getActivity();
            }

这是接口的代码

interface attendance_to_history{
public void invoke();}

以下是我的家长活动的代码:

    public class tabbed_activity extends AppCompatActivity implements attendance_to_history{
    @Override
    public void invoke() {
        fragment_A  frag = new fragment_A();
        frag.change_color();
    }
}

共 (2) 个答案

  1. # 1 楼答案

    以下是解决方案: 1-在保存片段B的活动中,将其设为implements attendance_to_history,并重写活动中的方法invoke

    那么你的代码就可以正常工作了

  2. # 2 楼答案

    attendance_to_history connector;
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        connector=(attendance_to_history) activity;
    }
    

    替换为onActivityCreated