前言
在activity页面上添加Fragment
一、Activity添加Fragment
1、在activity的album_activity.xml中添加
<FrameLayout
android:id="@+id/ShowView"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@+id/album_tab"
app:layout_constraintBottom_toBottomOf="parent"
/>
2、在activity中显示
private TabLayout tabLayout;
FragmentTransaction ft;
/** 当前tab的位置 */
int tab_position;
@Override
public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.album_activity);
super.onCreate(savedInstanceState);
// 跟随改变方向-添加这句之后方向锁定情况下也能跟随改变方向
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
// 创建Fragment
Fragment fragment = buildAlbumFragment(tab_position);
//启动编辑操作-获取到 FragmentTransaction 类的实例
ft = getSupportFragmentManager().beginTransaction();
//替换添加到容器中的现有片段
ft.replace(R.id.ShowView, fragment, "preview");
//提交-FragmentTransaction的最后一步:commit(),不会立即生效
ft.commit();
//加载数据
readAndRefresh(true);
init();
}
/** 创建Fragment */
protected Fragment buildAlbumFragment(int position) {
if (position == 0){
fragment = new MyAlbumFragment(Type_1);
}
if (position == 1){
fragment = new MyAlbumFragment(Type_2);
}
if (position == 2){
fragment = new MyAlbumFragment(Type_3);
}
return fragment;
}
界面相关
/** 初始化组件 */
private void init() {
// 获取 返回按钮
recallBtn = findViewById(R.id.top_recall);
// 获取tablayout
tabLayout = findViewById(R.id.album_tab);
// 显示界面
showView = findViewById(R.id.ShowView);
// tab
String[] tab_title = {getString(R.string.album_thumbnail_tabAll), getString(R.string.album_thumbnail_tabPhoto), getString(R.string.album_thumbnail_tabVideo)};
// 设置tablayout的标题文案
for (int i = 0; i < 3; i++) {
TabLayout.Tab tab = tabLayout.newTab();
tab.setText(tab_title[i]);
tabLayout.addTab(tab);
}
}
3、点击tablayout切换显示
/** 设置相关按钮的点击事件 */
private void settingBtnClickEvent(){
// 设置返回按钮的点击事件
recallBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { finish(); }
});
// tabLayout的点击事件
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
tab_position = tab.getPosition();
//根据点击位置加载数据
buildAlbumFragment(tab_position);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.ShowView, fragment, "preview");
ft.commit();
//我的Fragment要显示一个recycleview,所以这里我调用了刷新数据的方法
readAndRefresh(false);
}
@Override
public void onTabUnselected(TabLayout.Tab tab) { }
@Override
public void onTabReselected(TabLayout.Tab tab) { }
});
}
总结
在onCreate中replace加载fragment,replace把要显示的fragment显示在xml上写的FrameLayout上面