小编Ole*_*pez的帖子

如何测试启动 viewModelScope 协程的 ViewModel 函数?安卓科特林

我\xc2\xb4m试图找出在函数成员上测试这种类型的最简单方法,我\xc2\xb4见过更复杂的情况,例如协程 - 单元测试 viewModelScope.launch 方法,但没有\xc2\xb4t解决

\n
\n

ListScreenViewModel.kt

\n
\n
@HiltViewModel\nclass ListScreenViewModel @Inject constructor(): ViewModel() {\n\n    private var _itemsNumber = mutableStateOf(0)\n\n    private var _testList = mutableStateOf(listOf<String>())\n    val testList = _testList\n\n    fun addItem() {\n        viewModelScope.launch {\n            _itemsNumber.value++\n            _testList.value += (\n                "Item ${_itemsNumber.value}"\n                )\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n
\n

ListScreenViewModelTest.kt

\n
\n
class ListScreenViewModelTest{\n\n    private lateinit var viewModel: ListScreenViewModel\n\n    @Before\n    fun setup(){\n        viewModel = ListScreenViewModel()\n    }\n\n    @Test\n    fun `add an item to the list of items`(){\n        val numberOfItems = viewModel.testList.value.size\n        viewModel.addItem()\n …
Run Code Online (Sandbox Code Playgroud)

android unit-testing viewmodel kotlin kotlin-coroutines

19
推荐指数
1
解决办法
2万
查看次数

如何避免键盘打开时jetpack撰写内容上升

项目列表应保留在其位置

如上所示,当用户打开键盘时,项目列表、文本输入字段和添加按钮会升起,我希望项目列表保持在原位,而文本输入字段和添加按钮也会升起。

代码:

活动:

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
        OlegarioLopezTheme {
            Surface(
                modifier = Modifier.fillMaxSize(),
                color = MaterialTheme.colors.background
            ) { Navigation() }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Navigation() 函数只调用 Composable

可组合:

    @Composable
fun ListScreen(
    viewModel: MainScreenViewModel,
    navController: NavController
) {
    LazyColumn{...}
MainTextField(viewModel)
    AddButton(viewModel)
}
Run Code Online (Sandbox Code Playgroud)

android viewmodel android-softkeyboard kotlin android-jetpack-compose

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