今天在看《第一行代码Android》第四章fragment的介绍,照着书上的例子写了一遍代码,可是发现了问题,在使用FragmentTransaction.replace()方法时不替换掉先前的Fragment,而是让之后的Fragment覆盖在之前的Fragment上。书上的代码大致如下:
MainActivity:
public class MainActivity extends Activity {
ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button fragment_left=(Button) findViewById(R.id.leftbutton);
fragment_left.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AnotherFragmentRight fr=new AnotherFragmentRight();//获取待添加的fragment实例
FragmentManager fm=getFragmentManager();//获取到一个FragmentManger
FragmentTransaction ft=fm.beginTransaction();//开启一个事务
ft.replace(R.id.rightLayout, fr);
ft.addToBackStack(null);//将一个事务添加到一个返回栈中,按back键后返回到之前的fragment中
ft.commit();
}
});
}