我在我的应用中使用FragmentActivity。访问它时显示一个面板,列表是在新活动中创建的,但是当我在平板电脑中运行时,其中有两个面板,但拒绝加载第二个面板。
“ItemDetailFragment”是实现OnItemClickListener的FragmentActivty,它在我创建项目时最初是“Fragment”类型。
我收到两个错误,一个是ItemListActivity
if (mTwoPane) {
Bundle arguments = new Bundle();
arguments.putString(ItemDetailFragment.ARG_ITEM_ID, id);
//ItemDetailFragment fragment = new ItemDetailFragment();
ItemDetailFragment fragment = new ItemDetailFragment();
fragment.setArguments(arguments);
getSupportFragmentManager().beginTransaction()
.replace(R.id.item_detail_container, fragment)
//The method replace(int, Fragment) in the type FragmentTransaction
//is not applicable for the arguments (int, ItemDetailFragment)
// Change type of 'fragment' to 'Fragment'
.commit();
} else {
Intent detailIntent = new Intent(this, ListUsers.class);
detailIntent.putExtra(ItemDetailFragment.ARG_ITEM_ID, id);
startActivity(detailIntent);
}
与“ItemDetailActivity”完全相同的错误,“。add”导致错误
Bundle arguments = new Bundle();
arguments.putString(ItemDetailFragment.ARG_ITEM_ID,
getIntent().getStringExtra(ItemDetailFragment.ARG_ITEM_ID));
ItemDetailFragment fragment = new ItemDetailFragment();
fragment.setArguments(arguments);
getSupportFragmentManager().beginTransaction()
.add(R.id.item_detail_container, fragment)
.commit();
请给我任何建议,因为这是我第一次使用“片段”。
答案 0 :(得分:0)
我认为这是您收到的错误消息:
FragmentTransaction类型中的方法replace(int,Fragment) 不适用于参数(int,ItemDetailFragment) 将“片段”的类型更改为“片段”
您是否尝试过执行错误消息建议您执行的操作?
ItemDetailFragment fragment = new ItemDetailFragment(); // This does not work
Fragment fragment = new ItemDetailFragment(); // This works!
如果您在稍后阶段需要使用ItemDetailFragment
专用的方法,则始终可以将fragment
强制转换回ItemDetailFragment
- 对象。像这样:
((ItemDetailFragment) fragment).someMethod();