使用注解快速增加Fragment入口

目标

  • 定义一个注解,来表明需要快速进入这个Fragment
  • 定义一个Activity,可以打开指定的Fragment(模块已经实现)
  • 遍历apk中所有定义了这个注解的Fragment,放在列表中(模块已经实现)
  • 可以点击第三步的列表中的Fragment,打开这个Fragment。(模块已经实现)
  • 后续只需要添加Fragment,添加注解就可以自动增加到列表中(模块已经实现)

该模块只适合快速编写一些Fragment用来测试和验证自己想法。不适合传输参数给Fragment的例子。

所以需要做的是,

  • 增加模块依赖,
  • 然后给指定的Fragment增加注解。
  • 就可以在指定页面看到并打开该Fragment

使用方法

添加仓库

        maven { url 'https://jitpack.io' }


复制代码

例子


allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://jitpack.io' }

    }
}

复制代码

添加依赖

    implementation 'com.github.monkeydone.Rock:findFragment:v1.1.3'

复制代码

给Fragment增加注解

使用 @FragmentAnnotation(“简单例子2”, “root”)
来增加TestFragment的注解

  • 其中参数1为显示名字
  • 参数2为父节点名字
  • 当父节点相同时,会把两个注解的Fragment放在父节点点击进入的页面列表内

@FragmentAnnotation("简单例子2", "root")
class TestFragment : Fragment() {

    override fun onCreateView(
            inflater: LayoutInflater,
            container: ViewGroup?,
            savedInstanceState: Bundle?
    ): View? {
//        val view = inflater.inflate(R.layout.fragment_empty, container, false)
        val view = FrameLayout(container!!.context)
        view.setBackgroundColor(getRandomColor())
        return view
    }

    private fun getRandomColor(): Int {
        val random = Random()
        return Color.rgb(random.nextInt(254), random.nextInt(254), random.nextInt(254))
    }

    companion object {
        fun newInstance(): Fragment = EmptyFragment()
    }
}


复制代码

调用Fragment列表

            ListActivity.startListActivity(this)

复制代码

例子

        binding.tvHello.setOnClickListener {
            ListActivity.startListActivity(this)
        }

复制代码

效果图

image.png

仓库地址

源码地址

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享