我想用 ViewBinding 创建一个片段,但我的代码不起作用。我阅读了ViewBinding 文档,但我的片段没有显示。这是我的代码:
片段播放器.xml
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Test fragment"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
布局_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/fragment_player"
class="com.test.plo.view.PlayerFragment"
android:name="com.test.plo.view.PlayerFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
PlayerFragment.java
public class PlayerFragment extends Fragment {
private FragmentPlayerBinding fragmentPlayerBinding;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
fragmentPlayerBinding = FragmentPlayerBinding.inflate(inflater, container, false);
View view = fragmentPlayerBinding.getRoot();
return view;
}
@Override
public void onDestroyView() {
super.onDestroyView();
fragmentPlayerBinding = null;
}
}
Run Code Online (Sandbox Code Playgroud)
谁能帮我?
我有两个 Activity 和一个 Fragment。我想在这些活动之间共享数据。事实上,当用户在MainActivity中更改FragmentA时,必须自动更新SecondActivity中的FragmentA。
我的视图模型:PlayerFragmentVM.java
public class PlayerFragmentVM extends ViewModel {
private MutableLiveData<Boolean> btnFavoriteClickedLiveData;
public PlayerFragmentVM(){
btnFavoriteClickedLiveData = new MutableLiveData<>();
}
public MutableLiveData<Boolean> getBtnFavoriteClickedLiveData() {
return btnFavoriteClickedLiveData;
}
}
Run Code Online (Sandbox Code Playgroud)
PlayerFragment.java
public class PlayerFragment extends Fragment {
private FragmentPlayerBinding fragmentPlayerBinding;
private PlayerFragmentVM playerFragmentVM;
private ShineButton btnFavorite;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//init view binding
fragmentPlayerBinding = FragmentPlayerBinding.inflate(inflater, container, false);
View view = fragmentPlayerBinding.getRoot();
//init ViewModel
playerFragmentVM = ViewModelProviders.of(this).get(PlayerFragmentVM.class);
//button checked change listener
btnFavorite.setOnCheckStateChangeListener(new ShineButton.OnCheckedChangeListener() {
@Override …Run Code Online (Sandbox Code Playgroud) android android-fragments android-fragmentactivity android-livedata mutablelivedata