标签: android-viewbinding

每个使用视图绑定的绑定类是否都有一个父类?

我正在使用 ViewBinding,并且尝试减少创建 Fragment 的代码,该 Fragment 是一个抽象类并包含以下代码:

abstract class MyFragment<T> : Fragment() {
    
    private var binding: T? = null

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = getBinding()
        return binding.root
    }
    
    abstract fun getBinding(): T
}
Run Code Online (Sandbox Code Playgroud)

为了使其工作,我需要让 T 扩展一个类,并且该类需要是所有绑定类的父类。

所有生成的绑定类都有一个共同的父类?如果是这样那是什么?

generics android parent-child android-viewbinding

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

从 kotlin-android-extensions 迁移到较新的视图绑定

所以如果你得到类似下面的东西

> Configure project :app
Warning: The 'kotlin-android-extensions' Gradle plugin is deprecated.
Run Code Online (Sandbox Code Playgroud)

这可能意味着不再支持/弃用使用 Kotlin 合成进行视图绑定。

因此,下面是答案,您可以清楚地了解如何获取/识别与您的视图相关的 ViewBinding 类。

view kotlin android-viewbinding

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

BottomSheetDialogFragment.viewBinding

我很难在BottomSheets上为ViewBinding做一个属性委托。

一般的想法与此类似

对于片段我使用像这样

fun <T : ViewBinding> Fragment.viewBinding(viewBindingFactory: (View) -> T) =
FragmentViewBindingDelegate(this, viewBindingFactory)
Run Code Online (Sandbox Code Playgroud)

在作为 Fragments 的 BottomSheetsDialogFragments 上,它不接受委托。

fun <T : ViewBinding> BottomSheetDialogFragment.viewBinding(viewBindingFactory: (View) -> T) =
FragmentViewBindingDelegate(this, viewBindingFactory)
Run Code Online (Sandbox Code Playgroud)

BottomSheets 的生命周期与常规 Fragments 相同,所以我不希望有任何问题。

任何人都想出了一个解决方案?

android android-viewbinding

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

如何在 Android 中使用 ViewBinding 来扩充 ViewStub

由于 Kotlin Synthetics 已被弃用,我们正在迁移到 ViewBinding。

我已经尝试了很多关于 ViewStub、ViewBinding 的谷歌搜索和阅读文档,并且已经为 Fragments 活动实现了 ViewBinding,包括、合并标签,但是我找不到任何使用 ViewBinding 来膨胀 ViewStub 的方法。

 <ViewStub
            android:id="@+id/viewStubLayout"
            tools:layout="@layout/view_demo_layout" />
Run Code Online (Sandbox Code Playgroud)

请忽略宽度和高度属性,它们是作为样式添加的,并已从此代码段中删除。

您能否分享如何使用 ViewBinding 动态地使用另一个 xml 布局来扩展此视图。

即使在 ViewStub.java 文件中,类级别的注释也指出,

执行布局资源膨胀的首选方法如下:

ViewStub 存根 = findViewById(R.id.stub);
查看充气 = stub.inflate(); 

这是否意味着,我必须继续使用 R.layout.xxx_xx 来膨胀视图存根。我不能使用该特定 xml 文件的绑定对象来扩展视图吗?

android kotlin kotlin-android-extensions android-databinding android-viewbinding

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

如何在自定义对话框布局中使用视图绑定?

我在自定义对话框布局中实现视图绑定时遇到问题。是否可以?

 private fun showCustomDialog(title: String) {
    val dialog = Dialog(activity)
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
    dialog.setCancelable(false)

    dialog.setContentView(R.layout.custom_layout)

    val body = dialog.findViewById(R.id.body) as TextView
    body.text = title

    val noBtn = dialog.findViewById(R.id.noBtn) as TextView
    yesBtn.setOnClickListener {
        dialog.dismiss()
    }

    val yesBtn = dialog.findViewById(R.id.yesBtn) as Button
    noBtn.setOnClickListener { dialog.dismiss() }
    dialog.show()

}
Run Code Online (Sandbox Code Playgroud)

android android-viewbinding

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

当我在 Kotlin 中使用 Android 视图绑定时,我可以在任何地方避免使用 `!!` 吗?

我正在 Android 上使用 Kotlin,有一件事让我感到困惑。

当我将一些FragmentsJava 转换为 Kotlin 时,我得到了这个:

class XFragment : Fragment() {
    
    private var binding: FragmentXBinding? = null

    override fun onCreateView(inflater: LayoutInflater,
                          container: ViewGroup?, savedInstanceState: Bundle?): View? {
        binding = FragmentUhfReadBinding.inflate(inflater, container, false)
        return binding!!.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        binding!!.slPower.addOnChangeListener(this)
        binding!!.btnClearTagList.setOnClickListener(this)
    }

    // ...

    private fun updateUi(){
        binding!!.someTextView.text = getSomeTextViewText()
        binding!!.someSlider.value = getSomeSliderValue()
    }

}
Run Code Online (Sandbox Code Playgroud)

我无法使其binding不可为空,因为它必须XFragment在类构造函数之后(onCreateView()或之后)进行初始化。

因此,通过这种方法,它必须可以为空,并且我必须将其放在!!任何地方。

有什么方法可以避免这些!!吗?

android non-nullable kotlin android-viewbinding

0
推荐指数
1
解决办法
287
查看次数