Skip to content

licheedev/HideShowNavHostFragment

 
 

Repository files navigation

HideShowNavHostFragment

添加依赖

allprojects {
  repositories {
    ...
    maven { url 'https://dl.bintray.com/licheedev/maven' }
  }
}

  dependencies {
        implementation 'com.licheedev:nav-fragment-hideshow:1.0.1'
}

在布局文件中,把NavHostFragment换成HideShowNavHostFragment,其他用法与官方navigation完全一样

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_navi_host"
    android:name="com.licheedev.fragmentnavigatorhs.HideShowNavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:defaultNavHost="true"
    app:navGraph="@navigation/main_navigation" />

如果有当前Fragment切换到另外一个Fragment时,当前Fragment需要被replace掉,而不是hide掉的需求,可以使用@ReplaceFragment注解

@ReplaceFragment
class OneFragment : BaseFragment() {
    ...
}

原repo的readme

NavHostFragment&FragmentNavigator

通过重写 FragmentNavigator 将原来的 FragmentTransaction.replace() 方法替换为 hide()/Show()

再重写HostFragment使用重写后的FragmentNavigator。

Fragment hide()Show()触发的时候会触发Fragment的状态改变 onPause()onResume()函数。更好的管理Fragmnet状态。

避免Fragment的重建。运行Demo查看Log "NavigationDemo"

主要只有两个class

java

FragmentNavigatorHideShow.javaNavHostFragmentHideShow.java

kotlin

FragmentNavigatorHideShow.ktNavHostFragmentHideShow.kt

使用方式

1.粘贴 FragmentNavigatorHideShow.javaNavHostFragmentHideShow.java 到你的项目目录中。

2.在FragmentContrainerView中name属性修改为 "{你的包名路径}.NavHostFragmentHideShow"

<?xml version="1.0" encoding="utf-8"?>
<androidx.fragment.app.FragmentContainerView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/fragment"
    android:name="com.dboy.navigation.demo.javanav.NavHostFragmentHideShow"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:defaultNavHost="true"
    app:navGraph="@navigation/nav_graph" />

优势

修改代码少,使用便捷,不会对Navigation框架有太大影响。

没有修改Navigation原有的Api调用方式。

About

自定义Navigation FragmentNavigator 使用add hide 控制fragment,修改fragment状态onPause和onResume,提供Java和kotlin代码。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 51.8%
  • Kotlin 48.2%