【发布时间】:2018-06-14 12:31:22
【问题描述】:
我正在尝试在片段本身内部按下按钮时切换片段,如果新片段引发错误,它将变回第一个片段。我跟着其他答案,但没有奏效,我得到的总是一个空白片段。
我的主要活动是AppCompatActivity。这是onCreate()的一部分:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
viewPager = (ViewPager) findViewById(R.id.viewpager);
FragmentAdapter pageAdapter = new FragmentAdapter(getSupportFragmentManager(), MainActivity.this);
viewPager.setAdapter(pageAdapter);
}
在主要活动中我有这个功能来切换片段
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();
在启动时,第一个片段处于活动状态并且运行良好,当我按下调用 switchFragment() 的按钮时,它变成白色。我错过了什么?
【问题讨论】:
-
我找到了解决方案。我用 FrameLayout 创建了一个根片段,现在我可以正确使用 beginTransaction().replace()