我有片段,里面有子片段。我无法使用绑定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" />
答案 0 :(得分:2)
片段不是“视图”,因此您无法像传统视图一样访问它。但是,您可以通过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
现在,您可以出于任何原因使用片段)
答案 1 :(得分:0)
这为我解决了,注意我使用的是底部导航和视图绑定
val childFragment = supportFragmentManager.findFragmentByTag("fragment_sheet_home") as? NavHostFragment