灵活加载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,双击退出貌似关闭多页面

原创粉丝点击