Fragment事务指的是Activity中对应的Fragment的添加、移动、删除的操作。处理Fragment事务用FragmentTransaction,这个类有FragmentManager打开得到。代码如下
主Activity代码
package com.example.fragment3_manage;
import android.os.Bundle;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
* @author sea
* Fragment的manager的使用
* Fragment的事物的处理:可以对fragment进行添加,移除,替换
* 1、新增加事务
* 2、将事务加到后台堆栈
* 3、提交事务
*
*/
public class MainActivity extends Activity implements OnClickListener {
private Fragment1 fragment1;
private Fragment2 fragment2;
private Fragment3 fragment3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1 = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);
Button button3 = (Button) findViewById(R.id.button3);
Button button4 = (Button) findViewById(R.id.button4);
//new3个不同的Fragment
fragment1 = new Fragment1();
fragment2 = new Fragment2();
fragment3 = new Fragment3();
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
button4.setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
switch (arg0.getId()) {
case R.id.button1:
//新增加事务
transaction.replace(R.id.ly_fragment_container, fragment1);
//将Fragment的事务添加到后台堆栈中,让Activity记住发生了什么,效果就是点击后退按钮能退出当前Fragment
transaction.addToBackStack(null);
//提交事务
transaction.commit();
break;
case R.id.button2:
transaction.replace(R.id.ly_fragment_container, fragment2);
transaction.addToBackStack("fragment2");
transaction.commit();
break;
case R.id.button3:
transaction.replace(R.id.ly_fragment_container, fragment3);
transaction.addToBackStack(null);
transaction.commit();
break;
case R.id.button4:
transaction.remove(fragment3);
transaction.addToBackStack("removefragment3");
transaction.commit();
break;
default:
break;
}
}
}