Android中Fragment的使用,切换和返回等问题-刘宇

第一步:我们需要一个空的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

发布了20 篇原创文章 · 获赞 14 · 访问量 10万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章