package com.example.yzq.testfragment;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.widget.FrameLayout;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener {
private FrameLayout contentLayout;//容器
private BottomNavigationView mainBottomView;//底部导航
/*三个fragment*/
private HomeFragment homeFragment;
private DashboardFragment dashboardFragment;
private NoticeFragment noticeFragment;
/*三个fragment对应的key*/
private static final String HOME_FRAGMENT_KEY = "homeFragment";
private static final String DASHBOARD_FRAGMENT_KEY = "DashboardFragment";
private static final String NOTICE_FRAGMENT_KEY = "NoticeFragment";
private List<Fragment> fragmentList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
L.i("MainActivity onCreate");
initView();
/*savedInstanceState是否为空 不为空则取出fragment 为空则初始化fragment*/
if (savedInstanceState != null) {
/*获取保存的fragment 没有的话返回null*/
homeFragment = (HomeFragment) getSupportFragmentManager().getFragment(savedInstanceState, HOME_FRAGMENT_KEY);
dashboardFragment = (DashboardFragment) getSupportFragmentManager().getFragment(savedInstanceState, DASHBOARD_FRAGMENT_KEY);
noticeFragment = (NoticeFragment) getSupportFragmentManager().getFragment(savedInstanceState, NOTICE_FRAGMENT_KEY);
addToList(homeFragment);
addToList(dashboardFragment);
addToList(noticeFragment);
} else {
initFragment();
}
}
private void addToList(Fragment fragment) {
if (fragment != null) {
fragmentList.add(fragment);
}
L.i("fragmentList数量" + fragmentList.size());
}
private void initView() {
contentLayout = (FrameLayout) findViewById(R.id.bottom_nav_content);
mainBottomView = (BottomNavigationView) findViewById(R.id.mainBottomView);
mainBottomView.setOnNavigationItemSelectedListener(this);
}
private void initFragment() {
/* 默认显示home fragment*/
L.i("initFragment");
homeFragment = new HomeFragment();
showFragment(homeFragment, HOME_FRAGMENT_KEY);
}
/*显示fragment*/
private void showFragment(Fragment fragment, String tag) {
/*先判断fragment是否被添加过*/
if (!fragment.isAdded()) {
L.i(fragment+"没有添加过 添加");
getSupportFragmentManager().beginTransaction().add(R.id.bottom_nav_content,fragment, tag).commit();
fragmentList.add(fragment);
}
/*不可见*/
if (!fragment.isVisible()) {
for (Fragment frag : fragmentList) {
if (frag != fragment) {
/*先隐藏其他fragment*/
L.i("隱藏" + frag);
getSupportFragmentManager().beginTransaction().hide(frag).commit();
}
}
getSupportFragmentManager().beginTransaction().show(fragment).commit();
}
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
if (homeFragment == null) {
L.i("homeFragment 为空 创建");
homeFragment = new HomeFragment();
}
showFragment(homeFragment, HOME_FRAGMENT_KEY);
break;
case R.id.navigation_dashboard:
if (dashboardFragment == null) {
L.i("dashboardFragment 为空 创建");
dashboardFragment = new DashboardFragment();
}
showFragment(dashboardFragment, HOME_FRAGMENT_KEY);
break;
case R.id.navigation_notifications:
if (noticeFragment == null) {
L.i("noticeFragment 为空 创建");
noticeFragment = new NoticeFragment();
}
showFragment(noticeFragment, HOME_FRAGMENT_KEY);
break;
}
return true;
}
/*重新加载布局*/
public void reLoadFragView(){
/*现将该fragment从fragmentList移除*/
if (fragmentList.contains(dashboardFragment)){
fragmentList.remove(dashboardFragment);
}
/*从FragmentManager中移除*/
getSupportFragmentManager().beginTransaction().remove(dashboardFragment).commit();
/*重新创建*/
dashboardFragment=new DashboardFragment();
/*添加到fragmentList*/
fragmentList.add(dashboardFragment);
/*显示*/
showFragment(dashboardFragment,DASHBOARD_FRAGMENT_KEY);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
L.i("MainActivity onSaveInstanceState");
/*fragment不为空时 保存*/
if (homeFragment != null) {
getSupportFragmentManager().putFragment(outState, HOME_FRAGMENT_KEY, homeFragment);
}
if (dashboardFragment != null) {
getSupportFragmentManager().putFragment(outState, DASHBOARD_FRAGMENT_KEY, dashboardFragment);
}
if (noticeFragment != null) {
getSupportFragmentManager().putFragment(outState, NOTICE_FRAGMENT_KEY, noticeFragment);
}
super.onSaveInstanceState(outState);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
相关博客: http://blog.csdn.net/yuzhiqiang_1993/article/details/76152454 http://blog.csdn.net/yuzhiqiang_1993/article/details/75014591 清除fragment页面数据 fragment手动重新加载布局 解决fragment重叠
资源推荐
资源详情
资源评论
收起资源包目录
TestFragment.rar (45个子文件)
TestFragment
gradlew 5KB
settings.gradle 16B
gradle
wrapper
gradle-wrapper.properties 236B
gradle-wrapper.jar 52KB
local.properties 480B
gradlew.bat 2KB
gradle.properties 747B
.gitignore 127B
app
src
main
AndroidManifest.xml 832B
res
mipmap-hdpi
ic_launcher.png 3KB
ic_launcher_round.png 4KB
mipmap-xxxhdpi
ic_launcher.png 10KB
ic_launcher_round.png 14KB
mipmap-xhdpi
ic_launcher.png 5KB
ic_launcher_round.png 6KB
menu
submit.xml 286B
navigation.xml 628B
mipmap-mdpi
ic_launcher.png 2KB
ic_launcher_round.png 2KB
drawable
ic_dashboard_black_24dp.xml 352B
ic_home_black_24dp.xml 310B
ic_notifications_black_24dp.xml 464B
layout
content.xml 3KB
fragment_home.xml 544B
fragment_dashboard.xml 584B
fragment_notice.xml 548B
activity_main.xml 1KB
values
colors.xml 214B
strings.xml 446B
styles.xml 394B
dimens.xml 216B
mipmap-xxhdpi
ic_launcher.png 8KB
ic_launcher_round.png 10KB
java
com
example
yzq
testfragment
HomeFragment.java 508B
DashboardFragment.java 1KB
NoticeFragment.java 510B
MainActivity.java 6KB
L.java 224B
BaseFragment.java 920B
libs
app.iml 9KB
.gitignore 8B
build.gradle 937B
proguard-rules.pro 933B
build.gradle 636B
TestFragment.iml 889B
共 45 条
- 1
资源评论
- qabnm2018-01-28还可以还可以还可以
XeonYu
- 粉丝: 1925
- 资源: 57
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功