小编alo*_*pix的帖子

Hilt viewModel 和 Compose 不能一起工作

官方 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

7
推荐指数
1
解决办法
4958
查看次数

在xml中为PreferenceScreen设置Intent标志

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

6
推荐指数
1
解决办法
1640
查看次数