本文主要是介绍android-Fragment-hide和show,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
为了节约资源,现在很多 app 采用了 replace() 方法来实现碎片的切换,但是在这种情宽下,如果不讲之前的碎片雅茹栈中,就无法避免之前碎片回随之销毁,所以我们采用 hide() 和 show() 方法来实现碎片的切换。
实现效果
效果图项目地址--https://github.com/FishInWater-1999/android-SignInSystem
这里不讲废话直接给出最佳方案
首先,定义四个成员
private Fragment mContent = new Fragment();// 记录下当前碎片 由于替换private Fragment mPerson;
private Fragment mRanking;
private Fragment mSummary;
private FragmentTransaction transaction;
其次,在 OnCreate() 方法中,对他们进行初始化
mPerson = new Personal();
mRanking = new Ranking();
mSummary = new Summary();
fragmentManager = getSupportFragmentManager();
mContent = mRanking;
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.add(R.id.fragment, mContent).commit();
navigation.setSelectedItemId(R.id.navigation_home);
最后,在按钮点击时调用
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener= new BottomNavigationView.OnNavigationItemSelectedListener() {@Overridepublic boolean onNavigationItemSelected(@NonNull MenuItem item) {switch (item.getItemId()) {case R.id.navigation_home:switchContent(mPerson);return true;case R.id.navigation_dashboard:switchContent(mRanking);return true;case R.id.navigation_ranking:switchContent(mSummary);return true;}return false;}
};
private void switchContent(Fragment to) {if (mContent != to) {FragmentTransaction transaction = fragmentManager.beginTransaction();if (!to.isAdded()) { // 判断是否被add过// 隐藏当前的fragment,将 下一个fragment 添加进去transaction.hide(mContent).add(R.id.fragment, to).commit();} else {// 隐藏当前的fragment,显示下一个fragmenttransaction.hide(mContent).show(to).commit();}mContent = to;}}
完整代码地址 -->
点击跳转-- https://github.com/FishInWater-1999/android-SignInSystem/blob/master/app/src/main/java/com/example/joker/signinsystem/activities/MainActivity.java
这篇关于android-Fragment-hide和show的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!