在我的应用程序中,我有一个主Activity,它实现了一个TabLayout,它在两个片段之间切换。它们的处理方式如下:
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";
}
}
他们(这些片段)都是从
实现的import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager
否则我不能以这种方式使用它们。
一切正常,但现在我面临这个问题。我想有时用以下方法用不同的片段更改Tab1片段:
private void replaceFragment(int code){ FragmentTransaction ft = getFragmentManager()。beginTransaction();
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();
}
这项工作正常,但现在正面临这个问题。
FragmentTransaction ft = getFragmentManager().beginTransaction();
需要是appv4,但是它不允许从标准的android.app.fragment替换片段。我怎样才能使它工作,所以我可以用不同的片段替换标签布局中的片段?或者我是否需要使用新活动?
先谢谢你 的Grzegorz
编辑:
解释。在行
ft.replace(R.id.fragmentFrame, fragment, FragmentWhatever.TAG);
我得到错误,第二个参数片段应该是android.suppotr.v4.app.Fragment类型
答案 0 :(得分:1)
而不是:
[-2.0, 1.0, 3.5, 4.0]
使用支持库:
FragmentTransaction ft = getFragmentManager().beginTransaction();
还要确保导入:
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
答案 1 :(得分:0)
您也可以使用它来替换片段
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.fragmentFrame, fragment).commit();