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/