android - 如何使用构造函数的上下文?
问题描述
现在我有实现的类,Behavior
并且我在下一个代码中使用上下文,我可以简化它吗?
class FabBehavior: CoordinatorLayout.Behavior<FloatingActionButton> {
private var myContext: Context? = null
private val fabDefaultBottomMargin = myContext?.resources?.getDimension(R.dimen.dp_16)?.toInt() ?: 0
constructor() : super()
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
myContext = context
}
更新:
我也尝试过这样的事情:
class FabBehavior(context: Context, attrs: AttributeSet?): CoordinatorLayout.Behavior<FloatingActionButton>(context, attrs) {
private val fabDefaultBottomMargin = context.resources?.getDimension(R.dimen.dp_16)?.toInt() ?: 0
constructor(context: Context) : this(context, null)
解决方案
我认为您正在寻找的是:
class FabBehavior(private val context: Context?, attrs: AttributeSet?) : CoordinatorLayout.Behavior<FloatingActionButton>(context, attrs) {
fun doSomething() {
context.invokeMethodOnContext()
}
}
推荐阅读
- r - data.table:分配一个列值,该列由另一列指定
- mysql - MariaDB/MySql:在 CREATE 上设置 CURRENT_TIMESTAMP 并在 UPDATE 上更改注释
- node.js - 如何使用 JavaScript SDK 为 DynamoDB 表设置按需容量
- java - 字符+和/的奇怪排序
- c# - 应用程序更新未启动
- java - 类之间的 Java Swing 事件处理
- java - 如何从一个活动接收数据到另一个活动 - android
- scala - 如何以正确的方式使用 Scala Cats Validated?
- intellij-idea - Intellij - 运行“python_script.py”时出错:com/intellij/docker/remove/DockerCredentialsType
- css - SCSS 数组品牌样式表