I have a single activity app with bottom navigation tabs using Android Architecture Navigation Component.
Here is the code for one of the fragments:
public class ProfileFragment extends BaseFragment {
private final int layout = R.layout.fragment_profile;
//private final int layout = R.layout.fragment_profile_;
private ProfileViewModel mViewModel;
// FragmentProfileBinding mBinding;
public static ProfileFragment newInstance() {
return new ProfileFragment();
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
return inflater.inflate(layout, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mViewModel = ViewModelProviders.of(this, viewModelFactory).get(ProfileViewModel.class);
// mBinding = DataBindingUtil.setContentView(getActivity(), layout);
// mBinding.setLifecycleOwner(this);
// mBinding.setVm(mViewModel);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((mcApplication) getActivity().getApplication())
.getApplicationComponent()
.inject(this);
}
}
It has 2 possible versions (one which is with data binding is commented).
Current version without databinding works correctly, but the version with data binding displays fragment fullscreen instead of displaying it within the androidx.navigation.fragment.NavHostFragment area of my MainActivity. Binding of data works, my problem is that fragment displays full screen and trying to programmatically navigate from this fragment does not work. So databinding in this case breaks things. What am I doing wrong?
Here is contents of the fragment_profile_.xml file:
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
>
<data>
<variable
name="vm"
type="com.synergy.megacampus3.viewmodel.ProfileViewModel" />
</data>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:text="@={vm.fullUserName}"
android:textColor="@color/mc_text_color_1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/avatar"
tools:textSize="16sp" />
</LinearLayout>
</layout>