专业的编程技术博客社区

网站首页 > 博客文章 正文

android学习,fragment应用一(android fragmentation)

baijin 2024-08-15 00:15:01 博客文章 10 ℃ 0 评论

这个文章就讲解一下,如何动态创建一个fragment并激活,然后再创建一个fragmen,然后在两个fragment之间切换。

第一步,我在Activity_main.xml里添加两个按钮,还有一个framelayout,为什么是framelayout呢?因为这个布局简单,当然,用linearlayout或者gridlayout也行。

这里把默认的Container改成了LinearLayout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">


    <Button
        android:id="@+id/btn_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="btn_1" />

    <Button
        android:id="@+id/btn_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="btn_2" />

    <FrameLayout
        android:id="@+id/framelayout"
        android:background="#9986cf"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>


然后,再添加两个fragment布局,一个是blankfragment,一个是listfragment。




选择创建这两个选项后,系统会自动添加很多相关的代码,不去动它们就行了。


这里所有项目都是自动添加的。

剩下的,就是在MainActivity.java里添加相应的代码,就能实现blankfragment和listfragment之间的相互切换了。

//为了方便,让类继承监听接口
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

      //得到这两个按钮的实例,并添加监听
        Button btn1=findViewById(R.id.btn_1);
        Button btn2=findViewById(R.id.btn_2);
        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){//这里得到的就是按钮的id
            case R.id.btn_1:
                changeit(new BlankFragment());//这里实例化了空白fragment
                break;
            case R.id.btn_2:
                changeit(new ItemFragment());//这里实例化了listfragment
                break;
        }

    }

    private void changeit(Fragment fragment){
      //这里和RecyclerView一样,都是有一个管里类,这里得到一个管理类对象。
        FragmentManager fragmentManager=getSupportFragmentManager();
      //这个和数据库里差不多,实例化一个trasaction处理事物。
        FragmentTransaction transaction=fragmentManager.beginTransaction();
      //替换掉原有的framelayout界面对象
        transaction.replace(R.id.framelayout,fragment);
      //这里是把当前transaction推入到一个返回栈里,这样点返回的时候能返回到刚刚调用的界面
        transaction.addToBackStack(null);
      //事物的提交
        transaction.commit();
    }

}

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表