Какое реальное значение `вызвано: java.lang.RuntimeException: view должно иметь тег`? - PullRequest
0 голосов
/ 07 ноября 2018

Пожалуйста, сообщите мне, если знаете, какой тег хотел.

Caused by: java.lang.RuntimeException: view must have a tag

__ BaseActivity.java

    @Override
    public void setContentView(int layoutResID) {

        mBinding.contentParent.removeAllViews();
        DataBindingUtil.inflate(LayoutInflater.from(this), layoutResID, mBinding.contentParent, true);
        super.setContentView(mBinding.getRoot());
    }

__ ChildActivity.java

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mBinding = DataBindingUtil.setContentView(this, R.layout.my_wallet);
}

ОШИБКА logcat

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mydev}: java.lang.RuntimeException: view must have a tag
        at <more...>
     Caused by: java.lang.RuntimeException: view must have a tag
        at android.databinding.DataBinderMapperImpl.getDataBinder(DataBinderMapperImpl.java:121)

Ответы [ 3 ]

0 голосов
/ 02 января 2019

Обычно это происходит при попытке использовать DataBindingUtil.inflate() для раздувания макета, который не поддерживает привязку данных. Другими словами, компоновка, которую вы пытаетесь надуть, не имеет корневого элемента как <layout>.

Я столкнулся с этой проблемой при рефакторинге Activity для использования привязки данных, а Activity имеет несколько макетов. Я успешно реорганизовал один из макетов для включения элемента <layout> в его корневой каталог, но я не реорганизовал все других макетов (макетов для других плотностей экрана, языков, модулей и т. Д.).

Убедитесь, что ВСЕ возможные подходящие макеты настроены с <layout> в качестве их корневого элемента.

См. Этот документ разработчика Макеты и выражения привязки

0 голосов
/ 03 августа 2019

Обычно происходит при изучении привязки данных в Android, мы обычно используем main_activity.xml и затем включаем content_main.xml, но мы по ошибке помещаем тег <layout в файл содержимого. Нам нужно поместить этот тег <layout и <data в родительский файл, который используется в setContentView()

0 голосов
/ 12 ноября 2018

НЕТ идеи, но работает. ?

  @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mBinding = DataBindingUtil.inflate(getLayoutInflater(), R.layout.my_wallet, null, false);
            setContentView(mBinding.getRoot());
    }

OR

если ваш корневой макет должен соответствовать match_parrent для высоты / ширины. как https://github.com/umano/AndroidSlidingUpPanel

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mBinding = DataBindingUtil.inflate(getLayoutInflater(), R.layout._activity_layout, null, false);

        // TODO resolve this concurrent assignment
        // tricky method because sliding layout must be as parent / high is HIGH_EXACT to MATCH_PARENT 
        setContentView(mBinding.getRoot(), new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

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