Как инициализировать ViewBinding? - PullRequest
0 голосов
/ 05 марта 2020

Как инициализировать 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"
    }
}

Ответы [ 3 ]

0 голосов
/ 05 марта 2020
// 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>
0 голосов
/ 05 марта 2020
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. Это входит в onCreate в деятельности и onCreateView во фрагменте.

0 голосов
/ 05 марта 2020

var binding = ActivityMainBinding.inflate (layoutInflater)

Это снова раздувает макет, и вы получите другой экземпляр представлений, чем тот, который уже установлен в действии

Попробуйте использовать приведенный ниже код для привязки вида активности к подшивке. Где ROOT_VIEW_ID - это идентификатор представления root представления в вашем макете

var binding = ActivityMainBinding.bind (findViewById (ROOT_VIEW_ID)) *
* binding.hello.text = "Привет"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...