第一步:我们需要一个空的Activity并继承ActionBarActivity
第二步:创建一个Fragment,怎么创建一个Fragment呢,先创建一个layout命名FragmentMain,随后创建对应的java文件,命名MainFragment,文件的命名我们通常以Fragment开头。对应的java文件必须继承Fragment,注意导入的包,要是android.support.v4.app.Fragment这个包,随后重写onCreatView这个方法。
第三步:创建另一个Fragment,先创建一个layout命名FragmentAnother,随后创建对应的java文件,命名AnotherFragment,文件的命名我们通常以Fragment开头。对应的java文件必须继承Fragment,注意导入的包,要是android.support.v4.app.Fragment这个包,随后重写onCreatView这个方法。
第四步:我们需要在Fragment所呈现的Activity上设置,当MainActivity创建的时候进行初始化。首先判断一下Activiyt的当前状态,savedInstanceState==null时执行Fragment初始代码,代码如下:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(savedInstanceState == null){
getSupportFragmentManager().beginTransaction().add(R.id.container,new MainFragment()).commit();
}
}
}
用getSupportFragmentManager方法获取到Fragment的管理器,随后beginTransaction方法开启事务,添加相对于的fragment,然后commit提交,add第一个参数表示其父组件,第二个就是需要展现的Fragment的了
第五步:然后我们开始配置MianFragment这个java文件,不进行配置的话,即使Activity打开了,Fragment也没有任何内容,第二步有说到,我们需要重写onCreatView这个方法,这个方法有个返回值,将Fragment返回出去,也就是要将FragmentMain这个布局文件返回出去,代码如下:
public View onCreateView(final LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_main,container,false);
return root;
}
到这里,我们启动APP即可显示第一个Fragment了,如何做到Fragment来切换呢
第六步:在主Fragment中添加一个按钮,同来切换到另一个Fragment,此时我们就需要在第五步的onCreatView方法中添加代码了,代码如下:
public View onCreateView(final LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_main,container,false);
Button btnStart = (Button) root.findViewById(R.id.btnStartAnthoerFragment);
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.container,new AnotherFragment()).commit();
}
});
return root;
}
注意:这里的findViewById需要在root下引用,因为这个按钮在Fragment布局当中
然后为这个按钮设置事件侦听。如何实现切换Fragment呢,首先调用getFragmentManager方法获取Fragment管理器,然后开启事务beginTransaction这个方法。
注意:addToBackStack方法是用来设置返回键可操作Fragment,从而返回到上一个Fragment,如果不设置,在跳转到第二个Fragment时按返回键会退出程序,这个方法可根据实际要求添加或舍去。
之前我们用的是add方法来添加Fragment使其显示,这里不能使用add方法了,需要使用replace方法来替换原有Fragment,然后commit提交。
第七步:随后我们就要配置第二个Fragment的java文件AnthorFragment这个文件了,和第五步差不多,要让第二个Fragment显示出来,必须要让他返回出去,代码如下:
public class AnotherFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_another,container,false);
return view;
}
}
到这里我们就能显示主Fragment并点击上面的按钮跳转到第二个Fragment了,并且按返回键可以跳回第一个Fragment,有的时候我们需要添加返回按钮,并不是返回键,返回按钮怎么设置呢,这里就需要在第二个Fragment下也就是AnotherFragment下添加代码了,首先要给其设置一个返回按钮,然后通过findViewById找到,代码如下:
public class AnotherFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_another,container,false);
Button btnBack = (Button) view.findViewById(R.id.btnBack);
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getFragmentManager().popBackStack();
}
});
return view;
}
}
为这个按钮设置侦听事件,在按钮按下时调用getFragmentManager获取到Fragment管理器,然后调用popBackStack方法即可返回到上一个Fragment了,值得注意的是:上一个Fragment需要设置addToBackStack方法添加到任务栈里面去。到这里简单的Fragment就已经完成了。
By:Brycen Liu