官方 Android文档中使用 Compose、Hilt 和 ViewModel 注入与导航的方式似乎不起作用。
我有以下设置:
主屏幕,仅承载导航控制器。主屏幕显示一个按钮。导航到具有视图模型的名称屏幕。
@Composable
fun MainScreen() {
val navController = rememberNavController()
NavHost(navController, startDestination = "home") {
composable("home") {
HomeScreen() {
navController.navigate("my/Name")
}
}
composable("my/{name}") { navBackStackEntry ->
val viewModel: NameScreenViewModel = hiltViewModel(navBackStackEntry)
NameScreen(viewModel)
}
}
}
Run Code Online (Sandbox Code Playgroud)
@Composable
fun HomeScreen(onButtonClicked: () -> Unit) {
Button(onClick = onButtonClicked, modifier = Modifier.padding(8.dp)) {
Text("Continue")
}
}
Run Code Online (Sandbox Code Playgroud)
@HiltViewModel
class NameScreenViewModel @Inject constructor(private val test: TestClass): ViewModel() {
var name = MutableLiveData("empty")
fun change() {
name.value = test.load()
} …
Run Code Online (Sandbox Code Playgroud) android android-viewmodel android-jetpack-compose dagger-hilt
我PreferencesActivity
的视图是通过XML填充的,在XML中我包含一个PreferencesScreen
导航到系统的sync-preferences.使用下面的代码可以正常工作.
我的问题是,当我打开同步首选项时,打开主屏幕,然后再次打开我的应用程序,打开同步设置,因为它们位于堆栈顶部.是否有可能在xml中包含NEW_TASK-flag以告诉屏幕它是一个新任务而不是与我的应用程序堆栈相关联?
<PreferenceScreen
android:title="@string/preferences_activity_syncaccounts_title"
android:summary="@string/preferences_activity_syncaccounts_summary"
android:dialogTitle="@string/preferences_activity_syncaccounts_title">
<intent
android:action="android.settings.SYNC_SETTINGS"/>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud) android preferences preferenceactivity android-preferences android-activity