无法访问类“ android.widget.fragment”。检查模块类路径是否缺少或冲突的依赖项

时间:2020-09-05 07:48:06

标签: android fragment

我有片段,里面有子片段。我无法使用绑定cos从父片段访问它会导致编译错误。我确实是这样的:

从父片段中,我做了:

val fragment = binding.calculatorSheetHome // calculatorSheetHome is fragment id

但是编译错误说

Cannot access class 'android.widget.fragment'. Check your module classpath for missing or conflicting dependencies
  1. 这是父片段布局代码,我正在尝试访问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" />
    

2 个答案:

答案 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