我正在使用BottomSheetDialogFraenge显示几个自定义设置的。
要求:
当我点击任何选项卡在BottomSheetDialogFraance我替换的片段,并将其添加到backstack,以便当用户点击的onBackPress或向上的行动,它应该回到最后设置的BottomSheetDialogFraank的片段。
我想使用导航架构组件来简化我的事务。
问题:如果我使用导航架构组件从FragmentA导航到BottomSheetDialogFrach然后我收到下面的错误。
JAVAlang.IllegalStateException:对话框不能为空
我不知道如何使用导航体系结构组件实例化BottomSheetDialogFraank,并且使用下面的代码将不会使用导航体系结构组件进行维护。
BottomSheetDialogFragment.show(FragmentManager manager, String tag)
在导航组件版本2.1.0-alpha04
中,导航图
可以包含对话框
,作为目的地之一。
<?xml version="1.0" encoding="utf-8"?>
<navigation 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/main_navigation"
app:startDestination="@id/startFragment">
<fragment
android:id="@+id/loginFragment"
android:name="com.awesomeproject.android.authentication.login.LoginFragment"
android:label="Login"
tools:layout="@layout/login_fragment" />
<dialog
android:id="@+id/bottomSheet"
android:name="com.awesomproject.android.BottomSheetFragment"
tools:layout="@layout/bottom_sheet_dialog_fragment" />
</navigation>
底片片段看起来与其他底片相似。
class BottomSheetFragment : BottomSheetDialogFragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View =
inflater.inflate(R.layout.bottom_sheet_dialog_fragment, container, false)
}
然后您可以像对待其他目的地一样对待BotomSheet
。您可以导航到此目的地或将SafArgs
传入。
干杯
我正在我的应用程序中尝试导航架构组件。早些时候,我使用片段事务来实现以下功能。基本上,我想从导航。 碎片- 如果我正在使用导航组件并尝试 然后结果是FragmentA被FragmentB替换并且背景片段不可见。 我想知道一个解决方案,如果导航架构组件允许的话。 附言:我听说过嵌套导航主机,但从内部使用它好吗。 更新: FragmentB将有进一步交易的行动,例如: 碎片- 当用户按下后退按钮时,片
null 在调用之前和之后,我尝试了,但都不起作用(这是有意义的:在它没有要弹出的内容之前;在它只关闭刚刚添加的片段之后)。这是否意味着唯一的方法是重写来拦截它,并确保在这些情况下不会被调用? 谢了!
假设我们有两个片段:
是否可以将新的导航架构组件与DialogFragment一起使用?我必须创建自定义导航器吗? 我很乐意将它们与导航图中的新功能结合使用。
我目前正在学习新的Android导航架构组件 (https://developer.android.com/topic/libraries/architecture/navigation/). 我有点混淆了它的动机和概念,以下是我的不确定性: Android导航架构组件是否旨在消除在单个应用程序中使用多个活动的需要?这意味着,整个应用程序只需要一个单一活动,所有其他页面都将是片段? 在应用程序中使
这是我的单一活动方法: MainActivity具有NavHost 带有AppBarLayout、TabLayout、ViewPager等的主片段。 MainFragment在ViewPager中有2个(或更多)片段- CustomerListFragment- EmployeesListFragment公司- } CustomerDetailFrament(具有完全不同的设计布局) 员工详细信息