FrameLayout动态绑定Fragment

只是为了弥补没有在帧布局上面没有动态板顶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();
}

}

你可能感兴趣的:(Android)