Просмотр должен иметь тегAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Просмотр должен иметь тег

Сообщение Anonymous »

В моем библиотечном модуле есть абстрактная BaseActivity:

Код: Выделить всё

 @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Normal method to inflate the layout
mBinding = DataBindingUtil.setContentView(this, R.layout.base_view_stub_layout);
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
if (mBinding != null && mBinding.viewStub != null && mBinding.viewStub.getViewStub() != null) {
mBinding.viewStub.getViewStub().setLayoutResource(getLayoutId());
}

if (!hasStubInflated) {
View inflatedView = mBinding.viewStub.getViewStub().inflate();
//Abstract method
onViewStubInflated(inflatedView, savedInstanceState);
//Normal method to hide progress bar
onViewStubInflated();
}
initControllers();
handleViews();
setListeners();
restoreValues(savedInstanceState);
}
MainActivity из AppModule расширяет BaseActivity библиотечного модуля и, следовательно, получает абстрактный метод для переопределения:

MainActivity расширяет BaseActivity

Код: Выделить всё

private ActivityMainBinding mBinding;

@Override
public int getLayoutId() {
return R.layout.activity_main;
}

@Override
public void onViewStubInflated(View inflatedView, Bundle savedInstanceState) {
if (mBinding == null || mBinding.getRoot() != inflatedView) {
mBinding = ActivityMainBinding.bind(inflatedView);
}
}
Когда я запускаю приложение, я получаю:

Код: Выделить всё

 Caused by: java.lang.RuntimeException: view must have a tag
at com.example.android.emailapp.DataBinderMapperImpl.getDataBinder(DataBinderMapperImpl.java:67)
at androidx.databinding.MergedDataBinderMapper.getDataBinder(MergedDataBinderMapper.java:74)
at androidx.databinding.DataBindingUtil.bind(DataBindingUtil.java:199)
at androidx.databinding.ViewDataBinding.bind(ViewDataBinding.java:693)
at com.example.android.emailapp.databinding.ActivityMainBinding.bind(ActivityMainBinding.java:99)
at com.example.android.emailapp.databinding.ActivityMainBinding.bind(ActivityMainBinding.java:87)
at com.example.android.emailapp.login.MainActivity.onViewStubInflated(MainActivity.java:86)
at com.library.android.common.ui.baseui.BaseActivity.onCreate(BaseActivity.java:52)
Обратите внимание, что у меня есть тег макета как в xml BaseActivity, так и в MainActivity.

Я пробовал это без успех.

Является ли mBinding.viewStub.getViewStub().setLayoutResource(getLayoutId()) проблемой в BaseActivity, поскольку он попытается получить макет из AppModule? если это так, то как мне это решить?

Если вы знаете ответ, попробуйте объяснить почему это происходит вместе с решением...

Уже пробовал

В представлении должна быть ошибка тега

Что значит, что в представлении должна быть ошибка тега

Как использовать привязку данных для viewstub


Подробнее здесь: https://stackoverflow.com/questions/586 ... have-a-tag
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»