我正在尝试实现具有动态功能的新导航组件
所以结构看起来像这样:
dynamicFeatures = []在gradle中包含动态程式)特征
库-> globalNav
我一直在阅读很多没有成功的方法,因为每个功能都是完全隔离的,如何将它们粘合在一起而不相互依赖
例如,应用程序(app module)以开头,SplashActivity并检查会话状态,所以我的问题是我应该如何启动login_graph或home_graph,在第一种情况下,应在完成身份验证流程后启动主目录?
我目前正在尝试将它们粘合在一起的方式是使用一个globalNav模块(android-library),我发现了一些解决方法:
Intent().setClassName(context.packageName, className).also { context.startActivity(it) }
Run Code Online (Sandbox Code Playgroud)
深层链接(我想用作导航图的深层链接已包含那些链接),但是由于某种原因,即使只有我的应用程序使用它,它也始终显示“选择完整操作”选择器。
actions与深度链接相同的行为任何建议将是巨大的:)
PS:我一直在浏览/阅读的一些参考资料:
https://www.youtube.com/watch?v=ST2W1Y_Ztvk
https://jeroenmols.com/blog/2019/04/02/modularizationexample/
GitHub googlesamples资料库
PSS:如果我找到一个好的解决方案,我会尽力解决这个问题,我将确保也回答。
对于目前对此尚不支持的任何对此感兴趣的人,您可以在此处加注星标:https : //issuetracker.google.com/issues/132170186
android android-intent android-instant-apps android-architecture-components android-architecture-navigation
我目前正在写一些UI单元测试片段,其中之一@Test是看是否显示正确的对象列表,这是不是一个集成测试,所以我想嘲笑的ViewModel.
片段的变量:
class FavoritesFragment : Fragment() {
private lateinit var adapter: FavoritesAdapter
private lateinit var viewModel: FavoritesViewModel
@Inject lateinit var viewModelFactory: FavoritesViewModelFactory
(...)
Run Code Online (Sandbox Code Playgroud)
这是代码:
@MediumTest
@RunWith(AndroidJUnit4::class)
class FavoritesFragmentTest {
@Rule @JvmField val activityRule = ActivityTestRule(TestFragmentActivity::class.java, true, true)
@Rule @JvmField val instantTaskExecutorRule = InstantTaskExecutorRule()
private val results = MutableLiveData<Resource<List<FavoriteView>>>()
private val viewModel = mock(FavoritesViewModel::class.java)
private lateinit var favoritesFragment: FavoritesFragment
@Before
fun setup() {
favoritesFragment = FavoritesFragment.newInstance()
activityRule.activity.addFragment(favoritesFragment)
`when`(viewModel.getFavourites()).thenReturn(results)
}
(...)
// This is …Run Code Online (Sandbox Code Playgroud) android mockito kotlin android-espresso android-architecture-components
我想知道如何将项目发送/发送到Kotlin.Flow,所以我的用例是:
在消费者/ ViewModel / Presenter中,我可以使用以下 功能进行订阅collect:
fun observe() {
coroutineScope.launch {
// 1. Send event
reopsitory.observe().collect {
println(it)
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是问题就在Repository侧面,对于RxJava,我们可以使用BehaviorBehavior主题将其公开为Observable/Flowable并发出类似以下的新项:
behaviourSubject.onNext(true)
Run Code Online (Sandbox Code Playgroud)
但是,每当我建立新流程时:
flow {
}
Run Code Online (Sandbox Code Playgroud)
我只能收集。如何将值发送到流?
android kotlin kotlin-coroutines kotlinx.coroutines.channels kotlinx.coroutines.flow
导航组件文档鼓励包含多个片段的单个活动。
我们如何通过即时应用程序实现此目的?他们将如何直接降落在碎片中?
我正在考虑一个特定的用例:在已安装的应用程序上,用户在初始屏幕上启动,必要时登录,然后到达由BottomNavigation组成的主页,该页面由三个部分组成:Feature1,Feature2和Feature3 。每个要素都是一个片段或一组片段,它们位于BottomNav父对象的范围内。
现在可以创建一个直接在Feature3中打开的即时应用程序,这意味着没有父BottomNAv。功能本身就可以吗?
android kotlin android-instant-apps android-architecture-components android-architecture-navigation