Код: Выделить всё
@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 расширяет 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)
Я пробовал это без успех.
Является ли mBinding.viewStub.getViewStub().setLayoutResource(getLayoutId()) проблемой в BaseActivity, поскольку он попытается получить макет из AppModule? если это так, то как мне это решить?
Если вы знаете ответ, попробуйте объяснить почему это происходит вместе с решением...
Уже пробовал
В представлении должна быть ошибка тега
Что значит, что в представлении должна быть ошибка тега
Как использовать привязку данных для viewstub
Подробнее здесь: https://stackoverflow.com/questions/586 ... have-a-tag
Мобильная версия