错误
无法实例化片段androidx.navigation.fragment.NavHostFragment:确保类名称存在,是公共的,并且具有一个空的公共构造函数。
ActivityLayout
<fragment
android:id="@+id/my_nav_host_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="androidx.navigation.fragment.NavHostFragment"
app:defaultNavHost="true"
app:navGraph="@navigation/app_nav" />
活动
class HomeActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
}
}
片段
class MovieListFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_movie_list, container, false)
}
}
使用的依赖项:
implementation('android.arch.navigation:navigation-fragment-ktx:1.0.0-alpha07') {
exclude group: "com.android.support"
}
implementation('android.arch.navigation:navigation-ui-ktx:1.0.0-alpha07') {
exclude group: "com.android.support"
}
答案 0 :(得分:5)
如果仅在受保护版本上发生,您可能已经忘记添加保护规则。在您的proguard文件中添加以下规则
-keepnames class androidx.navigation.fragment.NavHostFragment
答案 1 :(得分:0)
尝试
dependencies {
def nav_version = "2.1.0-alpha01"
implementation "androidx.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "androidx.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
答案 2 :(得分:0)
如果您没有正确设置navigationGraph
,则会发生这种情况。可能是错误还是没有错误。发生此错误的原因如下。
偶然地,您在HomeActivity
中添加了navigationGraph
,还添加了MovieListFragment
并将MovieListFragment
连接到HomeActivity
。然后从图中删除HomeActivity。因此,MovieListFragment
ID不变的可能是其krrp地图。我在我的项目中发现了这个问题。事件我重新打开该项目,但没有任何运气。因此,我从图中删除了MovieListFragment
(仅从图中)。然后再次添加MovieListFragment
,然后它又可以正常工作。
在我的项目中,
HomeActivity
是MainActivity
,MovieListFragment
是DashboardFragment
。