如何在 Jetpack Compose 中将选定文本的菜单自定义到 TextField?我的意思是这样的:
在官方文档或互联网上没有找到任何有关如何使用 Jetpack Compose 执行此操作的信息。
在我的活动类中,其布局使用 xml 设置,我想显示一个对话框。\xc4\xb1n 这个对话框我想使用 Jetpack Compsose。这可能吗 ?我的代码如下,并且出现以下崩溃:
\njava.lang.IllegalStateException: ViewTreeLifecycleOwner not found from android.widget.RelativeLayout{910e78c V.E...... ......I. 0,0-0,0}\nRun Code Online (Sandbox Code Playgroud)\n这是我的活动课:
\nclass MainActivity : AppCompatActivity() {\n\n override fun onCreate(savedInstanceState: Bundle?) {\n super.onCreate(savedInstanceState)\n setContentView(R.layout.activity_main)\n\n val button = findViewById<android.widget.Button>(R.id.buttonPuppyInfo)\n button.text = "Open dialog"\n\n val dialog = Dialog(this@MainActivity)\n dialog.setContentView(R.layout.custom_dialog);\n val composeView = dialog.findViewById<ComposeView>(R.id.composeView)\n composeView.setContent {\n Button(\n onClick = {\n // Change the state to close the dialog\n //setShowDialog(false)\n },\n ) {\n Text("Superrr")\n }\n }\n\n button.setOnClickListener {\n dialog.show();\n }\n\n }\n\n}\nRun Code Online (Sandbox Code Playgroud)\n下面是我的custom_dialog.xml
\n<?xml version="1.0" …Run Code Online (Sandbox Code Playgroud) 我在 YouTube 上观看了一些教程项目,其中一些制作了 viewmodel 文件并编写了一些代码,只是为了使用 viewmodel!
我们有rememberand rememberSavableand stateand recomposition
and ... 在 jetpack 中组成。那么为什么还有人使用 viewmodel 呢?!它有更多的代码,使我们初学者更难以理解该项目。
我猜他们几乎没学过 XML 的视图模型,而且他们不能就这么忘记它!
在jetpack compose中是否可以以我们不需要使用viewmodel的方式编写代码?
viewmodel android-viewmodel android-jetpack android-jetpack-compose
根据一些文章,我正在尝试使用以下内容创建一个 android 应用程序:
recyclerview使用实时数据从房间数据库中获取数据的A。recyclerview 中的功能:
参考文章:
我的问题:
房间库中的数据重新排序未更新。
注意:
我使用属性进行数据排序
如果需要特定文件的代码,请发表评论。我不确定要发布哪个代码。
MainFragment.java (重新排序数据的代码,不起作用)
// To handle recycler view item dragging
@Override
public void onItemMove(int fromPosition, int toPosition) {
// Log
Log.e(TAG, "Item moved from " + fromPosition + " to " + toPosition);
// Move the item within the recycler view
mainRecyclerViewAdapter.moveItem(fromPosition, toPosition);
}
// To handle recycler …Run Code Online (Sandbox Code Playgroud) 对于包含这样的整数的可变状态,
var data by rememberSaveable {
mutableStateOf(-1)
}
Run Code Online (Sandbox Code Playgroud)
我们可以使用更新数据
data = 5
Run Code Online (Sandbox Code Playgroud)
它会更新数据并触发重组。
现在,我的要求是记住一个整数列表。
像这样声明,
var data by rememberSaveable {
mutableStateOf(mutableListOf<Int>())
}
Run Code Online (Sandbox Code Playgroud)
clear()、add()、 等列表操作remove()会更新列表中的数据,但不会触发重组,因为列表实例仍然相同。
为了解决这个问题,我用这些赋值替换了以下列表操作。
data.clear(), 使用data = arrayListOf()data.add(ele), 使用data = mutableListOf(*data.toTypedArray(), ele)同样,为了remove()尝试这个,
data.remove(ele)
data = mutableListOf(*data.toTypedArray())
Run Code Online (Sandbox Code Playgroud)
但这并没有触发重组。
正确的替代方案是什么remove()?
是否有通用的方法来处理所有列表操作?
我正在尝试用这种设计制作一张卡片

这是我正在尝试执行的代码。
Row(
horizontalArrangement = Arrangement.Start,
modifier = Modifier.background(Color.Cyan)
) {
Spacer(
modifier = Modifier
.padding(start = 16.dp)
.background(Color.White)
.fillMaxHeight()
.width(16.dp)
)
Column(verticalArrangement = Arrangement.SpaceAround) {
Text(text = "Title")
Text(
text = text
)
}
}
Run Code Online (Sandbox Code Playgroud)
预览准确地显示了我想要做的事情。但屏幕上未显示垫片
我正在使用 Switch Composable,我想为其提供选定和未选定状态的自定义背景。我怎样才能做到这一点?
var switchState by remember { mutableStateOf(false) }
Switch(
checked = switchState,
onCheckedChange = { switchState = !switchState }
)
Run Code Online (Sandbox Code Playgroud) 在 Android 模拟器中,使用计算机键盘输入,但我键盘上的“Enter”键应该接受输入并执行操作。相反,输入允许我进入下一行,并继续继续下一行(作为新行字符)。请在 TextField 元素的 Android Jetpack Composable 中向我建议您的答案。
android kotlin android-jetpack-compose android-compose-textfield
在片段中,我们有
private val activityViewModel: MainActivityViewModel by activityViewModels()
private val fragmentViewModel: MainFragmentViewModel by viewModels()
Run Code Online (Sandbox Code Playgroud)
获取整个应用程序中的共享视图模型(活动视图模型)和视图特定视图模型(片段视图模型)的实例。
我正在迁移以作曲。
如何在jetpack compose中获得两个具有不同范围的视图模型?
从文档中,我可以看到这一行,
viewModel() 返回一个现有的 ViewModel 或在给定范围内创建一个新的 ViewModel。
但是,如何指定视图模型的范围?
PS
我已经解决了这个类似的问题,但没有任何答案。