当前位置: 首页 > 知识库问答 >
问题:

ClassCastException:转换为已创建的接口问题?

曾元忠
2023-03-14
public class MyPostsScreen extends Fragment implements
    LoaderManager.LoaderCallbacks<Cursor>, MediaStoreAdapter.OnClickThumbListener{

    private OnFragmentInteractionListener mListener;

    private final static int READ_EXTERNAL_STORAGE_PERMMISSION_RESULT = 0;
    private final static int MEDIASTORE_LOADER_ID = 0;
    private RecyclerView mThumbnailRecyclerView;
    private MediaStoreAdapter mMediaStoreAdapter;

    public MyPostsScreen() {
        // Required empty public constructor
    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_my_posts_screen, container, false);

        mThumbnailRecyclerView = (RecyclerView) v.findViewById(R.id.thumbnailRv);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(this.getContext(), 3);
        mThumbnailRecyclerView.setLayoutManager(gridLayoutManager);
        mMediaStoreAdapter = new MediaStoreAdapter(this.getActivity());
        mThumbnailRecyclerView.setAdapter(mMediaStoreAdapter);

        checkReadExternalStoragePermission();

        // Inflate the layout for this fragment
        return v;
    }
}
public class MediaStoreAdapter extends RecyclerView.Adapter<MediaStoreAdapter.ViewHolder> {
    private Cursor mMediaStoreCursor;
    private final Activity mActivity;
    private OnClickThumbListener mOnClickThumbListener;

    public interface OnClickThumbListener {
        void OnClickImage(Uri imageUri);
        void OnClickVideo(Uri videoUri);
    }
    public MediaStoreAdapter(Activity activity) {
        this.mActivity = activity;
        //TODO: Figure out why this fails Java Class Exception, and FIX.
        this.mOnClickThumbListener = (OnClickThumbListener)activity;
    }
}

共有1个答案

庄飞
2023-03-14

将其更改为

private final Context mActivity;
....
....

public MediaStoreAdapter(Context context, OnClickThumbListener onClickThumbListener) {
    this.mActivity = context;
    this.mOnClickThumbListener = onClickThumbListener;

}

MyPostsScreen片段中,调用适配器构造函数,如下所示,

mMediaStoreAdapter = new MediaStoreAdapter(this.getActivity(), this);
mThumbnailRecyclerView.setAdapter(mMediaStoreAdapter);

这是因为您的接口是由片段实现的,而不是由MainActivity实现的。

 类似资料:
  • 问题内容: 我很困惑 我有一个直接实现接口的类: 这证明我在寻找正确的变量: 但是,当我尝试将类的实例强制转换为接口时: 我收到ClassCastException! 另外,返回false,我不确定为什么: 从文档: 确定是否 类或 由这类对象表示接口是 任一相同,或是一个超类或 的超接口,类或接口表示由指定的类的参数。 我不应该总是能够将一个对象强制转换为其类实现的接口吗? 谢谢。 问题答案:

  • 我试图创建像@repository这样的系统。

  • 问题内容: 我知道在stackoverflow中已经对此提出了很多要求,但是我找不到适合我问题的答案。 在下面的以下代码中,我无法打印出每个项目,因为它说。 我曾尝试使用来打印每个项目,但都无法正常工作。 我认为可能是由于Edge类中的方法导致的问题,但是如果我不使用它,我将无法获得真实的键号(它将被打印为或类似的形式) 感谢您之前的帮助 主班 边缘类 图类 节点类 问题答案: private H

  • 问题内容: 我有一个SOAP Web服务,正在尝试在应用程序内部调用。我正在使用cxf-codegen-plugin(3.1.10)从WSDL生成源。 使用生成的客户端,如果我在应用程序内调用Web服务,则效果很好。但是,我还针对导致问题的应用程序中的同一软件包使用了另一个JAXB实例。 例如,以下代码很好用: 但是,在此之前初始化一个新的JAXB实例会导致调用失败: 使用以下堆栈跟踪: 我试着接

  • 问题内容: 我想在下面的代码中改进getCustomerFromDTO方法,我需要从interface {}创建一个结构,目前我需要将该接口编组为byte [],然后将数组解组为我的结构-必须有更好的方法。 我的用例是,我通过rabbitmq发送结构,然后使用具有其他特定于域的数据的通用DTO包装器来发送它们。当我从Rabbit MQ接收DTO时,消息下方的一层将被封送给我的DTO,然后我需要从该

  • 这些是我的蒙德尔人: 而且 我的类中有这个方法: 在(扩展以前的)中使用: 在此的另一点中,我有: 但这给了我: 线程“JavaFX Application thread”java.lang.ClassCastException:类Models.Accomodation不能强制转换为类Models.Intraction(Models.Accomodation和Models.Intraction在C