提问者:小点点

将接口强制转换到上下文时类强制转换异常


我试图将数据从适配器传递到activity,但我得到了类强制转换异常。 帮助我正确地表达上下文。 我的上下文流如下所示。

>

  • MainActivity加载userData片段

    Transaction.Replace(r.id.FrameLayout,new userDataFrag());

    userData片段使用MainActivity的上下文设置适配器(在onAttach()中设置上下文)

    public void onAttach(@nonnull Context Context){super.onAttach(Context);this.Context=Context;gridAdapter=new ProfileGridAdapter(Context,myPosts);}

    适配器使用MainActivity上下文调用接口方法以启动postViewer activity

    SendArrayListToActivity.SendUserModels(后模型);

    在第三个场景中,我在适配器中获得类强制转换异常

    主要活动>; userData片段>; 适配器>; postViewer activity

    例外:

    java.lang.ClassCastException: com.test.MainActivity cannot be cast to com.test.Interfaces.SendArrayListToActivity
    

    我的适配器代码:

    private ArrayList<PostModel> postModels;
        private Context context; //receives context from userData fragment
        private SendArrayListToActivity sendArrayListToActivity; //interface
        public ProfileGridAdapter(Context context,ArrayList<PostModel> postModels)
        {
            this.context=context;
            this.postModels=postModels;
            sendArrayListToActivity = (SendArrayListToActivity) context;  //class cast exception
        }
    

  • 共1个答案

    匿名用户

    似乎您需要在您的MainActivity中实现您的接口。 如:

    class MainActivity : AppCompatActivity, SendArrayListToActivity {
    
        // Here you implement your methods
    
    }