首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android fragment事务错误参数Fragment应为android.support.v4.app.Fragment类型

Android fragment事务错误参数Fragment应为android.support.v4.app.Fragment类型
EN

Stack Overflow用户
提问于 2017-08-03 02:26:20
回答 2查看 929关注 0票数 1

在我的应用程序中,我有一个main Activity,它实现了一个在两个片段之间切换的TabLayout。它们的处理方式如下:

代码语言:javascript
复制
private class PagerAdapter extends FragmentPagerAdapter {

        PagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            return position == 0 ? Tab1Frag.getInstance()
                    : Tab2Frag.getInstance();
        }

        @Override
        public int getCount() {
            return 2;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return position == 0 ? "Tab1" : "Tab2";
        }
    }

它们(这些片段)都是从

代码语言:javascript
复制
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager

否则我不能以这种方式使用它们。

一切都很好,但现在我要面对这个问题。我有时想用以下方法将Tab1片段更改为不同的片段:

private void replaceFragment(int code) { FragmentTransaction ft = getFragmentManager().beginTransaction();

代码语言:javascript
复制
    if(code==0){
        ViewListElementFrag fragment = new ViewListElementFrag ();
        ft.replace(R.id.fragmentFrame, fragment, ViewListElementFrag.TAG);
    }
    else if(code==1){
        EditElementFragment fragment = new EditElementFragment ();
        ft.replace(R.id.fragmentFrame, fragment, EditElementFragment.TAG);
    }
    ft.commit();
}

这是正常工作,但现在它面临的问题。

代码语言:javascript
复制
FragmentTransaction ft = getFragmentManager().beginTransaction();

被要求为appv4,但是它不允许替换标准android.app.fragment中的片段。我如何才能使它工作,这样我的选项卡布局中的片段可以被不同的片段替换?或者我需要使用新的活动?

感谢你的加盟格泽戈兹

编辑:

来解释。在队伍中

代码语言:javascript
复制
 ft.replace(R.id.fragmentFrame, fragment, FragmentWhatever.TAG);

我得到的错误是,第二个参数fragment应该是android.suppotr.v4.app.Fragment类型

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-03 02:40:06

而不是:

代码语言:javascript
复制
FragmentTransaction ft = getFragmentManager().beginTransaction();

使用支持库:

代码语言:javascript
复制
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();

还要确保导入:

代码语言:javascript
复制
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
票数 1
EN

Stack Overflow用户

发布于 2017-08-03 02:41:11

您还可以使用它来替换片段

代码语言:javascript
复制
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.fragmentFrame, fragment).commit();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45468382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档