Android 动态替换片段
我试图在片段内部按下按钮时切换片段,如果新片段抛出错误,它将变回第一个片段。我遵循另一个答案,但没有一个有效,我得到的总是一片空白 我的主要活动是一个Android 动态替换片段,android,android-fragments,Android,Android Fragments,我试图在片段内部按下按钮时切换片段,如果新片段抛出错误,它将变回第一个片段。我遵循另一个答案,但没有一个有效,我得到的总是一片空白 我的主要活动是一个AppCompatActivity。这是onCreate()的一部分: 在主功能中,我有一个切换片段的函数 public void switchFragment(){ Fragment fragment = null; try { fragment = SecondFragment.newInstance();
AppCompatActivity
。这是onCreate()
的一部分:
在主功能中,我有一个切换片段的函数
public void switchFragment(){
Fragment fragment = null;
try {
fragment = SecondFragment.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
// Insert the fragment by replacing any existing fragment
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.viewpager, fragment).commit();
}
在FirstFragment类中:
((MainActivity) activityReference.get().getActivity()).switchFragment();
启动时,第一个fragmet处于活动状态,工作正常,当我按下调用
switchFragment()
的按钮时,它变为白色。我遗漏了什么?要更改视图页面中的片段,只需在视图页面上调用currentItem方法即可。例如
viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
从代码中选择
fragment=SecondFragment.newInstance()代码>行可能会抛出错误,在这种情况下,当片段到达fragmentManager.beginTransaction().replace(R.id.viewpager,fragment.commit())时,片段将为null
代码>,这可能导致您得到一个空白片段
只需在设置片段之前进行空检查,即可确保在发生错误时第一个片段仍然可见:
if(片段!=null)
fragmentManager.beginTransaction().replace(R.id.viewpager,fragment.commit()代码>对不起,是我的错,我写了一个“错误”的标题。我已经在viewPager中设置了4个片段,我需要的是替换片段以确保,您只需要将其更改为viewPager。对吧?是的。我也有同样的活动,用这个viewPager。在这个viewPager中,我有4个片段。其中三个将永远不变,永不改变。按下按钮时,其中一个需要更换。我得到一块白色的碎片。在日志控制台中,我可以看到fragmetn已正确创建,但由于某些原因,它未连接到viewPager!不,不是空指针的问题。即使是空检查,它也会给我一个白色的屏幕,我找到了一个解决方案。我创建了一个带有FrameLayout的根片段,现在我能够正确地使用beginTransaction().replace()
viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);