繁体   English   中英

如何初始化 ViewBinding?

[英]How to initialize ViewBinding?

如何初始化 VievBinding? 在 AppCompactActivity 版本 1.0.0 中,可以将布局传递给父构造函数,这样您就不会编写 OnCreateView。 我这样做了,但后来我想使用 VievBinding,但它对我不起作用。 不显示文本。 可以做什么?

    class MainActivity : AppCompatActivity(R.layout.activity_main) {

    override fun onStart() {
        super.onStart()
        var binding = ActivityMainBinding.inflate(layoutInflater)
        binding.hello.text = "Hello"
    }
}

class MainActivity : AppCompatActivity(R.layout.activity_main) {
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.bind(findViewById(Window.ID_ANDROID_CONTENT).getChildAt(0))
    }

虽然如果你依赖__Binding.inflate()更容易。

class MainActivity : AppCompatActivity {
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater, R.layout.activity_main)
        setContentView(binding.root)
    }

布局膨胀不应在onStart 它进入 Activity 中的onCreate和 Fragment 中的onCreateView

var 绑定 = ActivityMainBinding.inflate(layoutInflater)

这将再次膨胀布局,您将获得与活动中已设置的视图不同的实例

尝试使用以下代码将活动视图绑定到活页夹。 其中 ROOT_VIEW_ID 是布局中根视图的视图 ID

var 绑定 = ActivityMainBinding.bind(findViewById(ROOT_VIEW_ID))*
*binding.hello.text = "你好"

// Activity class
override fun onCreate(savedInstanceState: Bundle?) {
   super.onCreate(savedInstanceState);

   val binding:YourActivityLayoutBinding = 
         DataBindingUtil.setContentView(this, R.layout.your_activity_layout);
}

xml 中的布局视图应该被<layout>标签包围

<layout>
...// your activity view layout
</layout>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM