我正在尝试实现一个概览小部件并在单击按钮时启动一个活动。但它似乎对我来说不能正常工作。这是我的代码:
DistributionDateView(context, deliveryDates, postalCode) {
println("it should work i think")
actionStartActivity(AddParcelManuallyActivity.newIntent(context = context))
actionStartActivity<AddParcelManuallyActivity>()
actionStartActivity(AddParcelManuallyActivity::class.java)
}
其中DistributionDateView有一个onclick。 我尝试了 3 种不同的方法,“我认为它应该有效”正在日志中打印......但什么也没有发生。 我在这里做错了什么。
这里有同样的问题(使用 androidx.glance:glance-appwidget:1.0.0-beta01)。 我的解决方法是以通常的方式启动 Activity:
Intent(context, MyActivity::class.java).apply{
flags = FLAG_ACTIVITY_NEW_TASK
context.startActivity(this)
}
重要的是使用“FLAG_ACTIVITY_NEW_TASK”,因为您是从 Activity 外部调用 startActivity()
actionStartActivity
只是返回接口StartActivityAction
的对象。它应该用在一些扫视功能中。它不是函数 context.startActivity
的替代品。
//source code in package androidx.glance
fun GlanceModifier.clickable(onClick: Action): GlanceModifier =
this.then(ActionModifier(onClick))
//source code in package androidx.glance
@Composable
fun Button(
text: String,
onClick: Action,
modifier: GlanceModifier = GlanceModifier,
enabled: Boolean = true,
style: TextStyle? = null,
colors: ButtonColors = ButtonDefaults.buttonColors(),
maxLines: Int = Int.MAX_VALUE,
)
一个例子是
@Composable
fun MyContent() {
Image(
provider = provider,
modifier = GlanceModifier
.clickable(actionStartActivity<MainActivity>()),
contentDescription = ""
)
}