小编ch6*_*h65的帖子

如何在 ViewBinding 中使用片段?

我想用 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)

谁能帮我?

android fragment android-viewbinding

6
推荐指数
1
解决办法
3763
查看次数

如何使用LiveData在Activity之间共享数据?

我有两个 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

6
推荐指数
0
解决办法
2617
查看次数