簡體   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