【问题标题】:Android expected android.support.v4.app.Fragment for CameraFragment subclassAndroid 预期为 CameraFragment 子类的 android.support.v4.app.Fragment
【发布时间】:2015-05-20 23:53:26
【问题描述】:

片段管理器如下所示:

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 的子类,但它仍然不起作用。想法?

【问题讨论】:

  • 如果您的最低 SDK >= 11,您可以使用带有 getFragmentManager() 的原生片段以及带有 getSupportFragmentManager() 的支持片段。 cwac-camera 库也已弃用,不是吗?
  • @EugenPechanec:它还没有被弃用,虽然我正在开发一个替代库,它克服了原始库的一些关键限制。
  • 嗨@CommonsWare 我已经尝试过常规安装和 v9 安装,但由于各种原因都无法正常工作。这是因为(接近)弃用吗?还是我最有可能搞砸了。
  • @BryceLanglotz:我无法为您提供未指明的“各种原因”。我昨天发布了一个答案,其中推荐了一种创建适合您的片段的方法。如果您在使用该方法时遇到问题,请在该答案上发布 cmets,并详细说明这些问题是什么。

标签: android android-camera commonsware-cwac


【解决方案1】:

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

  • 一个用于原生 API 级别 11+ 片段
  • 一个用于 SherlockFragment,用于 ActionBarSherlock 操作栏后端,出于历史原因

它不包含仅扩展片段反向端口的Fragment 类的片段。

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

【讨论】:

    猜你喜欢
    • 2013-06-15
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多