tabFragment切换避免页面重叠
来源:互联网 发布:360.cn 域名价格 编辑:程序博客网 时间:2024/05/01 07:57
viewpager+fragment也可以实现切换fragment,但是这次使用的是一个FrameLayout去切换不同的fragment
采用的是add hide的办法去隐藏fragment和显示fragment,使用replace方法是销毁上一个fragment,去加载另一个fragment,这种方法google都不是推荐的
用replace容易出现页面重叠的问题,而且我们去切换fragment的时候会重新创建一个fragment,这样每次都要获取一下数据,使得app卡顿,耗资源,每次都获取新数据对于用户来说也是流量的问题,这样弊端很大。
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Fragment fragment1, fragment2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.rb_one).setOnClickListener(this); findViewById(R.id.rb_two).setOnClickListener(this); setTabSelect(0); } public void setTabSelect(int i) { FragmentManager manager = getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); switch (i) { case 0: fragment1 = manager.findFragmentByTag("TAG1"); hideTab(transaction); if (fragment1 == null) { fragment1 = new Fragment1(); transaction.add(R.id.fragment, fragment1, "TAG1"); } else { transaction.show(fragment1); } break; case 1: fragment2 = manager.findFragmentByTag("TAG2"); hideTab(transaction); if (fragment2 == null) { fragment2 = new Fragment2(); transaction.add(R.id.fragment, fragment2, "TAG2"); } else { transaction.show(fragment2); } break; } transaction.commit(); } private void hideTab(FragmentTransaction transaction) { if (fragment1 != null) { transaction.hide(fragment1); } if (fragment2 != null) { transaction.hide(fragment2); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.rb_one: setTabSelect(0); break; case R.id.rb_two: setTabSelect(1); break; } }}
这样我们去隐藏或者显示界面就不会出现页面重叠的问题,而且避免了每次切换页面的时候都要重新获取一下数据的问题。
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/fragment" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/rg_group" /> <RadioGroup android:id="@+id/rg_group" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="horizontal"> <RadioButton android:id="@+id/rb_one" style="@style/TabBottomStyle" android:checked="true" android:text="页面一" /> <RadioButton android:id="@+id/rb_two" style="@style/TabBottomStyle" android:text="页面二" /> </RadioGroup></RelativeLayout>
最后发现横竖屏切换的时候还是会出现页面重叠的问题,解决办法是AndroidManifest.xml文件下的对应的activity添加android:configChanges = "orientation|screenSize"这个属性,并在在fragment里面重写onConfigurationChanged这个方法,里面什么都不操作。就可以避免横竖屏切换时的界面重叠问题
Demo链接
0 0
- tabFragment切换避免页面重叠
- 添加页面切换动画, 避免冷启动
- Android 添加页面切换动画, 避免冷启动
- Android 添加页面切换动画, 避免冷启动
- 避免UITableViewCell重叠的解决方法
- 避免TableViewCell重叠的问题
- 避免UITableViewCell重叠的解决方法
- 如何避免面板弹出重叠
- 页面同一位置重叠多张图片,鼠标点击切换特效
- FragmentTabHost切换Fragment时避免重复加载UI,导致切换后重绘页面的问题解决
- Fragment页面重叠
- 切换Fragment 出现列表重叠
- Fragment 切换时 重叠问题
- 避免内存重叠的memmove()函数
- 正确使用FragmentPagerAdapter,避免Fragment重叠问题
- 重写FragmentTabHost,避免导航栏切换过程中再次创建内容页面Fragment
- 页面切换
- 页面切换
- Spring笔记整理
- 【Leetcode】2.Add Two Numbers 解题
- ZOJ-3752-The Three Guys【暴力】
- 福州大学第十二届程序设计竞赛-D - So Hard
- HDU2585
- tabFragment切换避免页面重叠
- 【HDU 2709】【水题】Sumsets
- Java防反编译技术
- spring3整合hibernate4的时候遇到的问题(Error applying BeanValidation relational constraints)
- 计算逆序对
- c++ 类的构造函数
- Android Handler中的handleMessage方法和post方法之源码剖析
- sql 连接
- 3的幂--leetcode326