Fragment

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();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值