-1

我在我的应用程序中使用 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);
        }

以及“.add”在“ItemDetailActivity”中的完全相同的错误导致错误

 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();

请给我任何建议,因为这是我第一次使用“片段”。

4

1 回答 1

0

我认为这是您收到的错误消息:

FragmentTransaction 类型中的方法 replace(int, Fragment) 不适用于参数 (int, ItemDetailFragment) 将 'fragment' 的类型更改为 'Fragment'

您是否尝试过执行错误消息建议您执行的操作?

ItemDetailFragment fragment = new ItemDetailFragment(); // This does not work
Fragment fragment = new ItemDetailFragment(); // This works!

如果您在稍后阶段需要使用独有的方法ItemDetailFragment,您可以随时fragment转换回ItemDetailFragment-object。像这样:

((ItemDetailFragment) fragment).someMethod();
于 2012-11-04T03:13:34.997 回答