在我的应用程序中,我有一个main 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中的片段。我如何才能使它工作,这样我的选项卡布局中的片段可以被不同的片段替换?或者我需要使用新的活动?
感谢你的加盟格泽戈兹
编辑:
来解释。在队伍中
ft.replace(R.id.fragmentFrame, fragment, FragmentWhatever.TAG);我得到的错误是,第二个参数fragment应该是android.suppotr.v4.app.Fragment类型
发布于 2017-08-03 02:40:06
而不是:
FragmentTransaction ft = getFragmentManager().beginTransaction();使用支持库:
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();还要确保导入:
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;发布于 2017-08-03 02:41:11
您还可以使用它来替换片段
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.fragmentFrame, fragment).commit();https://stackoverflow.com/questions/45468382
复制相似问题