1、创建Fragment类(继承于Fragment)
2、创建布局文件
3、将“布局文件” 与 “Fragment类“ 相关联
-在Fragment类里面重写onCreateView方法
View view = inflater.inflate(R.layout.fragment1,null);
return view;
或者
View view = inflater.inflate(R.layout.fragment1,container,false);
return view;
4、在activity中显示
(1)第一种方法(直接显示)
FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); //创建一个FragmentTransaction对象
ft.add(android.R.id.content,new Fragment1()); //ft的add方法(事务添加)也可以用ft.replace()
ft.commit(); //ft的commit方法(事务提交)
android.R.id.content是android自带的,这时候activity_main.xml里面可以什么都不写。
如果我们自定义fragment的容器,可以在activity_main.xml里面添加FrameLayout布局,用FrameLayout的id替换android.R.id.content。
(2)第二种方法(点击view进行Fragment的替换)
以下两种的实现效果相同,只不过一种是implements View.OnClickListener 以及 是否"调用函数"有差异而已。
public class MainActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView1 = findViewById(R.id.image1);
ImageView imageView2 = findViewById(R.id.image2);
ImageView imageView3 = findViewById(R.id.image3);
imageView1.setOnClickListener(listener);
imageView2.setOnClickListener(listener);
imageView3.setOnClickListener(listener);
}
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Fragment fragment = null;
switch (v.getId()){
case R.id.image1:
fragment = new Fragment1();
break;
case R.id.image2:
fragment = new Fragment2();
break;
case R.id.image3:
fragment = new Fragment3();
break;
default:
break;
}
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.frame,fragment);
ft.commit();
}
};
}
或者
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView1 = findViewById(R.id.image1);
ImageView imageView2 = findViewById(R.id.image2);
ImageView imageView3 = findViewById(R.id.image3);
imageView1.setOnClickListener(this);
imageView2.setOnClickListener(this);
imageView3.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.image1:
showFragment(new Fragment1());
break;
case R.id.image2:
showFragment(new Fragment2());
break;
case R.id.image3:
showFragment(new Fragment3());
break;
default:
break;
}
}
private void showFragment(Fragment fragment) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.frame,fragment);
transaction.commit();
}
}