Android——碎片的使用,实现页面切换

嗯。。其实在很久以前我就会使用碎片,但是后来在项目中我负责的部分很少使用到碎片,所以渐渐有点生疏了,今天翻我的博客发现居然没有介绍过碎片,复习一下顺带写一篇关于碎片的博客,先上一个效果图:

Android——碎片的使用,实现页面切换

这里图方便我就只做了两个按钮切换,废话不多说,开始代码部分,首先,我们将activity的布局改成这样:

Android——碎片的使用,实现页面切换

是的,通俗一下理解,这个就是你的主页面,而碎片就是因为你的主页面点击之后不停变化的一个layout,首先我们将这些按钮在MainActivity初始化:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private ImageButton one, two;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        one = findViewById(R.id.one_button);
        two = findViewById(R.id.two_button);
        one.setOnClickListener(this);
        two.setOnClickListener(this);
      
    }

  

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.one_button:
             
                break;
            case R.id.two_button:
               
                break;
        }
    }
}

再添加好点击事件(因为我只有两个所以只设置了两个点击事件),然后我们开始设置碎片,先创建两个布局文件,这里因为很随意所以我直接就创建了两个背景颜色不同的布局,这里就不贴了,然后我们来看碎片部分的代码:

首先创建一个名为OneActivity的新java类,让它继承Frgment,再给它绑定布局:

public class OneFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.one_activity, container, false);
        return view;
    }
}

然后创建TwoActivity,一样的操作,

然后在我们的MainActivity里面添加这些代码:

package com.example.administrator.myapplication;

import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private ImageButton one, two;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        one=findViewById(R.id.one_button);
        two=findViewById(R.id.two_button);
        one.setOnClickListener(this);
        two.setOnClickListener(this);
        jumpFragment(new OneFragment());
    }

    private void jumpFragment(Fragment fragment) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.replace(R.id.framelayout, fragment);
        transaction.commit();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.one_button:
                jumpFragment(new OneFragment());
                break;
            case R.id.two_button:
                jumpFragment(new TwoActivity());
                break;
        }
    }
}

这里自己创建了一个jumpFragment的方法,这个方法里我们用来设置我们主布局上部分加载哪一个碎片,首先我们拿到FragmentManager,直接使用getFragmentManager就可以拿到,然后初始化我们的FragmentTrasaction,用于将我们的碎片放到主布局上半部分的layout里,然后使用commmit()提交事务,完成操作,实现了切换的功能

就是这么简单!