灵活加载Fragment(存在问题)
来源:互联网 发布:电脑桌面的软件打不开 编辑:程序博客网 时间:2024/06/01 08:16
代码
主代码
package com.self.zsp.rd;import android.support.v4.app.FragmentTransaction;import android.view.View;import android.widget.RadioButton;import android.widget.RadioGroup;import base.BaseActivity;import fragment.IssuanceFragment;import fragment.PersonalFragment;import fragment.RecommendFragment;/** * @decs: 主页 * @author: 郑少鹏 * @date: 2017/10/18 12:39 * @version: v 1.0 */public class MainActivity extends BaseActivity implements View.OnClickListener { /** * 控件 */ private RadioGroup radioGroup; private RadioButton radioRecommend; private RadioButton radioIssue; private RadioButton radioPersonal; /** * 碎片 */ private RecommendFragment recommendFragment; private IssuanceFragment issuanceFragment; private PersonalFragment personalFragment; /** * 事务 */ private FragmentTransaction transaction; @Override protected void initContentView() { setContentView(R.layout.activity_main); } @Override protected void stepUI() { radioGroup = findViewById(R.id.radioGroup); radioRecommend = findViewById(R.id.radioRecommend); radioIssue = findViewById(R.id.radioIssue); radioPersonal = findViewById(R.id.radioPersonal); } @Override protected void initConfiguration() { transaction = getSupportFragmentManager().beginTransaction(); } @Override protected void initData() { } @Override protected void startLogic() { /** * 默认推荐 */ recommendFragment = new RecommendFragment(); radioGroup.check(R.id.radioRecommend); transaction.replace(R.id.frameLayout, recommendFragment); transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); transaction.addToBackStack(null); transaction.commit(); } @Override protected void setListener() { radioRecommend.setOnClickListener(this); radioIssue.setOnClickListener(this); radioPersonal.setOnClickListener(this); } @Override public void onClick(View v) { transaction = getSupportFragmentManager().beginTransaction(); switch (v.getId()) { /** * 推荐 */ case R.id.radioRecommend: /** * 替换前移除原有Fragment */ removeFragment(transaction); if (recommendFragment == null) { recommendFragment = new RecommendFragment(); } transaction.replace(R.id.frameLayout, recommendFragment); transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); transaction.addToBackStack(null); transaction.commit(); break; /** * 发布 */ case R.id.radioIssue: removeFragment(transaction); if (issuanceFragment == null) { issuanceFragment = new IssuanceFragment(); } transaction.replace(R.id.frameLayout, issuanceFragment); transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); transaction.addToBackStack(null); transaction.commit(); break; /** * 我的 */ case R.id.radioPersonal: removeFragment(transaction); if (personalFragment == null) { personalFragment = new PersonalFragment(); } transaction.replace(R.id.frameLayout, personalFragment); transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); transaction.addToBackStack(null); transaction.commit(); break; default: break; } } /** * 移除Fragment * * @param transaction */ private void removeFragment(FragmentTransaction transaction) { if (recommendFragment != null) { transaction.remove(recommendFragment); } if (issuanceFragment != null) { transaction.remove(issuanceFragment); } if (personalFragment != null) { transaction.remove(personalFragment); } }}
布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/background" android:orientation="vertical" tools:context=".MainActivity"> <FrameLayout android:id="@+id/frameLayout" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="17"> </FrameLayout> <RadioGroup android:id="@+id/radioGroup" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="2" android:gravity="center" android:orientation="horizontal"> <RadioButton android:id="@+id/radioRecommend" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:drawablePadding="@dimen/d3" android:drawableTop="@drawable/recommend_selector" android:gravity="center" android:text="推荐" android:textColor="@color/fontHint" android:textSize="@dimen/s11" /> <RadioButton android:id="@+id/radioIssue" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:drawablePadding="@dimen/d3" android:drawableTop="@drawable/issue_selector" android:gravity="center" android:text="发布" android:textColor="@color/fontHint" android:textSize="@dimen/s11" /> <RadioButton android:id="@+id/radioPersonal" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:drawablePadding="@dimen/d3" android:drawableTop="@drawable/personal_selector" android:gravity="center" android:text="我的" android:textColor="@color/fontHint" android:textSize="@dimen/s11" /> </RadioGroup></LinearLayout>
drawable
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/issue_select" android:state_checked="true" /> <item android:drawable="@drawable/issue_normal" android:state_checked="false" /></selector>
注意
每commit都需创建事务。
问题
打开一或多fragment,按下HOME键后点应用图标没反应,双击退出后点正常
打开一或多fragment,双击退出貌似关闭多页面
阅读全文
0 0
- 灵活加载Fragment(存在问题)
- fragment预加载问题
- fragment懒加载问题
- ViewPager +Fragment 中Fragment被预加载问题(ViewPager中Fragment的生命周期管理)
- fragment 嵌套 fragment 解决 getFragmentManager() 已经存在的问题
- 加载fragment的error问题
- ViewPager + Fragment 预加载问题
- ViewPager+Fragment 预加载问题
- Fragment中加载ListView问题
- Fragment中加载ListView问题
- Fragment的动态加载问题
- Fragment的懒加载问题
- 关于fragment懒加载问题
- Fragment中加载问题以及LayoutInflater加载
- 解决ViewPager+fragment预加载问题(getItem()两次调用)
- Fragment的懒加载(解决ViewPager中Fragment生命周期错乱的问题)
- 改善侧滑菜单Fragment切换速度(解决Fragment切换加载慢的问题)
- 构建灵活的UI之Fragment(二)
- 利用js在页面上获取url
- PAT乙级1030. 完美数列(25)
- vmware-openstack
- 关键词提取
- Android 自定义属性赋值
- 灵活加载Fragment(存在问题)
- 动态规划
- 安全通信系统--OpenSSL服务器和客户端
- web前端工程师必备的六大技术,你了解吗?
- spring cloud Hystrix 3 (服务容器保护)
- 随笔记录zmq中的poller()用法
- [App] Tcpdump 抓包工具之基本用法
- [转]Windbg Symbol符号文件设置
- 第二届全国中医药院校程序设计竞赛