如何断开工具栏操作与片段的连接 Android
How to disconnect toolbar action from fragment Android
我的应用程序有一种 activity 和三种类型的片段。
MainActivity
有 ToolBar
,片段将自己的动作添加到这个 ToolBar
- 所以片段没有自己的 ToolBar
.
- (A) 片段为
formFragmet
,日期为 EditText
、CheckBox
、Spinner
和时间字段。它在 ToolBar
中有更新的动作
当用户更改其中某些内容时的那些字段。
- (B) 片段是一个
ListFragment
,它有记录列表 -
它不需要在 ToolBar
. 中执行操作
- (C) 片段是一个选项卡式片段,它可以同时包含 (A)
片段和 (B) 片段,或选项卡中的任何其他组合
(
ViewPager
)。 TabbedFragment
中不需要任何操作
ToolBar
,但是如果 FormFragment
(A) 在当前选项卡中,它
显示 FormFragment
的操作,所以没关系,而且它
工作正常。
问题是这样的:
当用户从 ListFragment
(B) 中选择一条记录时,下一个屏幕是 FormFragment
(A),并且用户要更改字段中的值。之后,用户从 ToolBar
(更新)中选择一个操作,并更新表单。
更新成功后,用户返回(触摸 Activity 添加的 ToolBar
中的箭头,弹出 BackStack
,并显示 ListFragment
)到 ListFragment
(B) 并且用户选择列表中的另一个项目。另一个(新)FormFragment
在字段中打开了不同的数据。
用户更改了此表单中的内容,并按下了工具栏中的更新操作。
更改未保存!原因是这个(新)formFragment
中 ToolBar
的动作仍然附加到 PREVIOUS FormFragment
???
有人遇到过这个问题吗???
有没有办法以某种方式从片段中分离动作?
我猜测 Android 会在创建时将工具栏中的新操作设置为新片段。但显然它不是那样做的。
如果有人可以提供帮助,请。
P.S。
如果需要,我会提供部分代码。
提前致谢。
这个问题的答案是:使用TabbedPagerAdapter中的getChildFragmentManager()。
我使用的是 Activity 的 getSupportFragmentManager(),当您使用嵌套片段时,这是错误的,例如在具有 ViewPager 的 TabbedFragment 中,并且 ViewPager 内部有(子)片段。
我的应用程序有一种 activity 和三种类型的片段。
MainActivity
有 ToolBar
,片段将自己的动作添加到这个 ToolBar
- 所以片段没有自己的 ToolBar
.
- (A) 片段为
formFragmet
,日期为EditText
、CheckBox
、Spinner
和时间字段。它在ToolBar
中有更新的动作 当用户更改其中某些内容时的那些字段。 - (B) 片段是一个
ListFragment
,它有记录列表 - 它不需要在ToolBar
. 中执行操作
- (C) 片段是一个选项卡式片段,它可以同时包含 (A)
片段和 (B) 片段,或选项卡中的任何其他组合
(
ViewPager
)。TabbedFragment
中不需要任何操作ToolBar
,但是如果FormFragment
(A) 在当前选项卡中,它 显示FormFragment
的操作,所以没关系,而且它 工作正常。
问题是这样的:
当用户从 ListFragment
(B) 中选择一条记录时,下一个屏幕是 FormFragment
(A),并且用户要更改字段中的值。之后,用户从 ToolBar
(更新)中选择一个操作,并更新表单。
更新成功后,用户返回(触摸 Activity 添加的 ToolBar
中的箭头,弹出 BackStack
,并显示 ListFragment
)到 ListFragment
(B) 并且用户选择列表中的另一个项目。另一个(新)FormFragment
在字段中打开了不同的数据。
用户更改了此表单中的内容,并按下了工具栏中的更新操作。
更改未保存!原因是这个(新)formFragment
中 ToolBar
的动作仍然附加到 PREVIOUS FormFragment
???
有人遇到过这个问题吗???
有没有办法以某种方式从片段中分离动作?
我猜测 Android 会在创建时将工具栏中的新操作设置为新片段。但显然它不是那样做的。
如果有人可以提供帮助,请。
P.S。 如果需要,我会提供部分代码。
提前致谢。
这个问题的答案是:使用TabbedPagerAdapter中的getChildFragmentManager()。
我使用的是 Activity 的 getSupportFragmentManager(),当您使用嵌套片段时,这是错误的,例如在具有 ViewPager 的 TabbedFragment 中,并且 ViewPager 内部有(子)片段。