1、 要使用fragment,首先需要创建一个类继承
android.app.Fragment;
Fragment1.java(需要给Fragment1配置布局文件f1.xml)
import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment1 extends Fragment { //初始化Fragment,实例化在Fragment中的成员变量 @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } //给Fragment 加载UI布局,组件例如button,textview等等在这里去初始化
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub //这个布局没有父布局,所以root置空 View view=inflater.inflate(R.layout.f1, null); return view; } }
2、Activity调用
import android.os.Bundle; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.view.Menu; public class MainActivity extends Activity { private FragmentManager manager; private FragmentTransaction transaction; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //将activity_main中的某一块换成fragment1 manager=getFragmentManager(); transaction=manager.beginTransaction(); Fragment1 fragment1=new Fragment1(); //content_frame的内容换成fragment1 transaction.add(R.id.content_frame, fragment1); transaction.commit(); } }
3、使用到回退栈
//加入Fragment回退栈的标志tag transaction.add(R.id.content_frame, fragment1,"fragment1");
虽然是在同一个Activity下切换Fragment,但是由于回退栈,不会因为返回键而马上退出Activity,而是返回上一个fragment。
manager.findFragmentByTag(arg0);
manager.findFragmentById(id);
4、涉及到的布局
Activity的布局---》xml包含一个id
注意这样的id一般是一个FrameLayout的布局,里面可以有其他的控件,比如textview等。但是该id不能够使用比如线性布局LinearLayout 等,否则replace之后原先的布局能被露出
Fragment的布局---》xml
transaction.add(Id, Fragment);
Done!