Android 期望 android.support.v4.app.Fragment 为 CameraFragment 子类

标签 android android-camera commonsware-cwac

fragment 管理器看起来像这样:

FragmentManager fragmentManager = getSupportFragmentManager();
    switch (position) {
        case 0:
            fragmentManager.beginTransaction()
                    .replace(R.id.container, ReviewFragment.newInstance(position + 1))
                    .commit();
            break;
        case 1:
            fragmentManager.beginTransaction()
                    .replace(R.id.container, RedeemFragment.newInstance(position + 1))
                    .commit();
            break;
        case 2:
            fragmentManager.beginTransaction()
                    .replace(R.id.container, MyAccountFragment.newInstance(position + 1))
                    .commit();
            break;
        case 3:
            ParseUser.logOut();
            presentLoginActivity();
            break;
    }

并且错误就在线上:

case 0: 
fragmentManager.beginTransaction()
                    .replace(R.id.container, ReviewFragment.newInstance(position + 1))
                    .commit();

错误信息如下:

Wrong second argument type. Found: 'blah.blah.blah.MainActivity.ReviewFragment', required: 'android.support.v4.app.Fragment'

CameraFragment 来自 cwac-camera-0.6.12.jar

public static class ReviewFragment extends CameraFragment

    /**
     * The fragment argument representing the section number for this
     * fragment.
     */
    private static final String ARG_SECTION_NUMBER = "section_number";

    /**
     * Returns a new instance of this fragment for the given section
     * number.
     */
    public static ReviewFragment newInstance(int sectionNumber) {
        ReviewFragment fragment = new ReviewFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }

    public ReviewFragment() {
    }

    ...
}

我知道 CameraFragment 是 android.app.Fragment 并且我尝试更改 getSupportFragmentManager(); getFragmentManager();并将所有其他 Fragment 子类更改为 android.app.Fragment 的子类,但它仍然不起作用。想法?

最佳答案

我的 CWAC-Camera 库有两个 fragment 实现:

  • 一个用于原生 API 级别 11+ fragment
  • 一个用于 SherlockFragment,用于 ActionBarSherlock 操作栏向后移植,由于历史原因

它不包含仅扩展 fragment 向后端口的 Fragment 类的 fragment 。

话虽这么说,创建您自己的应该只需要几分钟。复制this class到您的项目并将其更改为扩展 android.support.v4.app.Fragment 而不是 SherlockFragment。在快速浏览代码时,我没有看到需要进行的任何其他更改。

关于Android 期望 android.support.v4.app.Fragment 为 CameraFragment 子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30362287/

相关文章:

android - Maven:无法解析 pom.xml 中的属性

android - 在图表值旁边添加自定义文本 - achartengine

java - 如何将 ImageView 传递到另一个布局并将其保存在布局内?

用于捕获图像和视频的 Android Intent ?

android - Android 的 FileProvider 是否真的支持外部文件路径?

java - android HttpResponse 总是在第二次调用时死掉

android - 将位图(RGB_565)转换为灰度(8 位)Android

android - 相机预览显示黑屏

android - fragment 中的 MergeAdapter 布局问题

android - 无法显示 MediaRouteActionProvider 按钮