FrameLayout动态绑定Fragment

这篇博客主要展示了如何在Android应用中利用FrameLayout动态地添加和管理Fragment。通过一个简单的Demo,作者演示了FragmentTransaction的使用,包括在FragmentActivity中实例化Fragment,并将它们添加到FrameLayout容器中,实现页面切换的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

只是为了弥补没有在帧布局上面没有动态板顶Fragment这一个缺憾,简单的配置了一个demo
Fragment的布局都是非常简单,只有一个TextView,这里就不贴不来了
然后Fragment.class中链接布局文件
View view = inflater.inflate(R.layout.first_fragment,container,false);

然后就是主函数中进行绑定设置!代码如下
主代码:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends FragmentActivity {
FrameLayout frameLayout;
ImageView homeView, starView, mineView;
SecondFragment secondFragment = null;
FirstFragment firstFragment = null;
ThirdFragment thirdFragment = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    frameLayout = findViewById(R.id.fragment_root);

    initView();
    //第一次加载页面,选择显示第一个界面
    selectFragment(0);

}

public void initView() {
    firstFragment = new FirstFragment();
    secondFragment = new SecondFragment();
    thirdFragment = new ThirdFragment();
    
    homeView = findViewById(R.id.home_img);
    starView = findViewById(R.id.star_img);
    mineView = findViewById(R.id.mine_img);
//设置点击事件,切换Fragment
    homeView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            selectFragment(0);
        }
    });

    starView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            selectFragment(1);
        }
    });

    mineView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            selectFragment(2);
        }
    });


}

public void selectFragment(int position) {//设置传入第几值显示第几个fragment
    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();

    switch (position) {
        case 0:
            if (firstFragment == null) {
                firstFragment = new FirstFragment();
            }
			//将原来的Fragment替换掉---此处R.id.fragmen指的是FrameLayout
            ft.replace(R.id.fragment_root, firstFragment);
            break;
        case 1:
            if (secondFragment == null) {
                secondFragment = new SecondFragment();
            }
            ft.replace(R.id.fragment_root, secondFragment);
            break;
        case 2:
            if (thirdFragment == null) {
                thirdFragment = new ThirdFragment();
            }
            ft.replace(R.id.fragment_root, thirdFragment);
            break;
        default:
            break;
    }
    ft.commit();
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值