【发布时间】:2014-02-01 13:14:59
【问题描述】:
我有一个布局,我一直在交换我的两个片段 MainFragment 和 SecondFragment 我有一个活动级别按钮,并通过它的 onclick 在布局中交换这些片段。
但每次从 FragB 切换回来时,我都需要保留相同的 FragA 实例。 下面是我使用的代码,但应用程序因 NullPointerError 而崩溃。
// When journey button menu is clicked [INSIDE THE MAIN ACTIVITY]
OnClickListener journeyBtnClick = new OnClickListener() {
@Override
public void onClick(View arg0) {
if(currentType==0){
InitThisFragment(1);
}else{
InitThisFragment(0);
}
}
};
private int currentType=0;
public void InitThisFragment(int type){
if(type==0){
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
//get the previously added MainFragment from the BackStack
Fragment mainFragment= getSupportFragmentManager().findFragmentByTag("main");
transaction.replace(R.id.abs_fragment_container,mainFragment);
transaction.setTransition(FragmentTransaction.TRANSIT_ENTER_MASK);
transaction.commit();
}else{
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.abs_fragment_container, new SecondFragment());
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
transaction.commit();
}
currentType=type;
}
在此之前,我在我的 Activity 类的 OnCreate() 中初始化 MainFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.abs_fragment_container, new MainFragment());
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); //add MainFragment in the BackStack
transaction.addToBackStack("main");
transaction.commit();
}
用户点击按钮
- 启动SecondFragment的新Fragment [No History of the SecondFragment 上一个片段]
- 返回 MainFragment [与离开时相同的状态 它]
请帮忙! 提前致谢。
【问题讨论】:
标签: android android-fragments android-fragmentactivity