问题描述
我有片段,里面有子片段。我无法使用绑定cos从父片段访问它会导致编译错误。我确实是这样的:
从父片段中,我做了:
val fragment = binding.calculatorSheetHome // calculatorSheetHome is fragment id
但是编译错误说
Cannot access class 'android.widget.fragment'. Check your module classpath for missing or conflicting dependencies
-
这是父片段布局代码,我正在尝试访问
calculator_sheet_home
<variable name="mLanguage" type="com.hamidjonhamidov.calculator.model.room.LanguageM" />
<androidx.coordinatorlayout.widget.CoordinatorLayout android:id="@+id/coordinator_layout" android:layout_width="match_parent" android:layout_height="match_parent" app:layoutFullscreen="@{true}"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingTop="@dimen/grid_0_25" app:paddingBottomSystemWindowInsets="@{true}" app:paddingTopSystemWindowInsets="@{true}" android:clipToPadding="false"> // ... </androidx.coordinatorlayout.widget.CoordinatorLayout> <fragment android:id="@+id/calculator_sheet_home" android:name="com.hamidjonhamidov.calculator.ui.main.home.calculator_sheet_home.CalculatorSheetFragmentHome" android:layout_width="match_parent" android:layout_height="match_parent" />
解决方法
片段不是“视图”,因此您无法像传统视图一样访问它。但是,您可以通过fragment标签访问它,如下所示:
<fragment
android:id="@+id/calculator_sheet_home"
android:name="com.hamidjonhamidov.calculator.ui.main.home.calculator_sheet_home.CalculatorSheetFragmentHome"
android:tag="fragment_sheet_home" // add this line
android:layout_width="match_parent"
android:layout_height="match_parent" />
现在从父片段中可以执行以下操作:
val childFragment = childFragmentManager.findFragmentByTag("fragment_sheet_home") as? CalculatorSheetFragmentHome ?: return
现在,您可以出于任何原因使用片段)
,这为我解决了,注意我使用的是底部导航和视图绑定
val childFragment = supportFragmentManager.findFragmentByTag("fragment_sheet_home") as? NavHostFragment