目标
- 定义一个注解,来表明需要快速进入这个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)
}
复制代码
效果图
仓库地址
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END