相关疑难解决方法(0)

设备旋转后,NavController 没有当前导航节点

我正在制作支持不同设备方向的应用程序。导航由 Android Jetpack 的 Navigation 执行。横向应用程序主屏幕如下所示。它是列表包装片段(它是NavHostFragment,它被添加到fragment标签中的活动布局),包装包括列表片段(fragment)和详细信息片段(FrameLayout)。纵向方向是相似的(包装器和列表在其中,详细信息可访问抛出导航)。

应用主画面

我的问题是在更改设备方向后出现异常

java.lang.IllegalStateException: 没有当前导航节点

带有模拟数据的布局的第一个版本工作正常,在我将 ROOM 添加到我的应用程序、新订单和更新订单片段后出现错误。很遗憾,我无法更准确地定位错误源。

列出包装器代码

class OrderListWrapperFragment : RxFragment() {

    private val disposable = CompositeDisposable()

    var selectedOrderId: Long = 0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val bundle = savedInstanceState ?: arguments
        bundle?.let {
            selectedOrderId = it.getLong(EXTRA_ORDER_ID)
        }
    }

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? = inflater.inflate(R.layout.orders__list_wrapper, container, false)

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        initializeToolbar(toolbar, …
Run Code Online (Sandbox Code Playgroud)

android android-fragments kotlin android-architecture-components

16
推荐指数
2
解决办法
5903
查看次数

IllegalStateException:链接没有NavController集

我正在使用Android导航组件进行导航.我有一个LoginFragment,它有一个按钮可以转换到SignUpFragment.单击按钮我收到此错误.

java.lang.IllegalStateException: View android.support.v7.widget.AppCompatButton{49d9bd1 VFED..C.. ...P.... 201,917-782,1061 #7f090172 app:id/signUpLink} does not have a NavController set
Run Code Online (Sandbox Code Playgroud)

这是我的nav_graph.xml

<navigation xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        app:startDestination="@id/loginFragment">
        <fragment
            android:id="@+id/loginFragment"
            android:name="org.fossasia.openevent.app.core.auth.login.LoginFragment"
            android:label="login_fragment"
            tools:layout="@layout/login_fragment">
            <action
                android:id="@+id/action_loginFragment_to_signUpFragment"
                app:destination="@id/signUpFragment" />

        </fragment>
    </navigation>
Run Code Online (Sandbox Code Playgroud)

以下是LoginFragment for Navigation中的代码 -

binding.signUpLink.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_loginFragment_to_signUpFragment, null));
Run Code Online (Sandbox Code Playgroud)

以下是NavHostFragment的活动布局文件的摘录 -

<FrameLayout
            android:id="@+id/fragment_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:name="android.navigation.fragment.NavHostFragment"
            app:navGraph="@navigation/main_navigation"
            app:defaultNavHost="true"/>
Run Code Online (Sandbox Code Playgroud)

android android-architecture-components android-architecture-navigation

15
推荐指数
11
解决办法
1万
查看次数

使用 androidx.fragment.app.FragmentContainerView 时出现 ClassNotFoundException

我正在尝试从使用 a 过渡FrameLayout到 usingFragmentContainerView并且从我看过的教程来看,这应该很容易。但是,当我在进行更改后运行我的应用程序时,我得到

Error inflating class androidx.fragment.app.FragmentContainerView
Caused by: java.lang.ClassNotFoundException: androidx.fragment.app.FragmentContainerView
Run Code Online (Sandbox Code Playgroud)

我的布局文件非常简单:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="@layout/app_bar_main">

    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/fragment_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我需要在我的 build.gradle 中添加一些东西吗?为什么找不到类?

android android-fragments

14
推荐指数
2
解决办法
7794
查看次数

FragmentContainerView 和 fragment 的区别

我有两个行为不同的 XML 布局,唯一的区别是一个使用了新的

  • <androidx.fragment.app.FragmentContainerView 另一个,年长的:
  • <fragment

在 AndroidStudio 中,如所附照片所示,在第一种情况下,我看不到布局。在其他布局中,我这样做。

它是 Android Studio 3.6.3 的错误,还是定义问题,如何解决?

我在 Android Studio 中看到的情况的打印屏幕

 <fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/fragment"
    android:name="com.example.tasktimer.MainActivityFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:layout="@layout/a_fragment_main"/>
Run Code Online (Sandbox Code Playgroud)

android

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

将 &lt;fragment&gt; 标签替换为 FragmentContainerView

Android Studio 提供替换片段<fragment>中的标签的功能Google Maps。在我没有的应用程序中Navigation,但可能会添加。我应该用 替换<fragment>标签<FragmentContainerView>吗?

在此输入图像描述

查看https://proandroiddev.com/android-fragments-fragmentcontainerview-292f393f9ccf我发现我们也可以替换<FrameLayout><androidx.fragment.app.FragmentContainerView>. 我们应该这样做吗?

android android-fragments

5
推荐指数
1
解决办法
9263
查看次数