我正在制作支持不同设备方向的应用程序。导航由 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
我正在使用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
我正在尝试从使用 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 中添加一些东西吗?为什么找不到类?
我有两个行为不同的 XML 布局,唯一的区别是一个使用了新的
<androidx.fragment.app.FragmentContainerView
另一个,年长的:<fragment在 AndroidStudio 中,如所附照片所示,在第一种情况下,我看不到布局。在其他布局中,我这样做。
它是 Android Studio 3.6.3 的错误,还是定义问题,如何解决?
<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 Studio 提供替换片段<fragment>中的标签的功能Google Maps。在我没有的应用程序中Navigation,但可能会添加。我应该用 替换<fragment>标签<FragmentContainerView>吗?
查看https://proandroiddev.com/android-fragments-fragmentcontainerview-292f393f9ccf我发现我们也可以替换<FrameLayout>为<androidx.fragment.app.FragmentContainerView>. 我们应该这样做吗?