Android——碎片的使用,实现页面切换
嗯。。其实在很久以前我就会使用碎片,但是后来在项目中我负责的部分很少使用到碎片,所以渐渐有点生疏了,今天翻我的博客发现居然没有介绍过碎片,复习一下顺带写一篇关于碎片的博客,先上一个效果图:
这里图方便我就只做了两个按钮切换,废话不多说,开始代码部分,首先,我们将activity的布局改成这样:
是的,通俗一下理解,这个就是你的主页面,而碎片就是因为你的主页面点击之后不停变化的一个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()提交事务,完成操作,实现了切换的功能
就是这么简单!