FragmentActivity未在第二个面板中显示

时间:2012-11-04 01:55:14

标签: android fragment android-fragmentactivity

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

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

1 个答案:

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