在基于片段导航的基本应用程序中,片段B替换片段A.然后我按下后退按钮返回到片段A,我希望片段B的OnDestroyView可以被调用,但它永远不会被调用。 我在事务中使用AddToBackStack()。 这是正常的吗?
我使用AppCompat 26.0和Xamarin Android。
更新:
可以使用任何Xamarin示例轻松复制。例如https://developer.xamarin.com/samples/monodroid/FragmentsWalkthrough/
在DetailsFragment.cs中,添加以下内容:
public override void OnDestroyView()
{
base.OnDestroyView();
}
然后,如果在OnDestroyView上添加断点,即使按下“返回”按钮,也会看到它永远不会被调用。换句话说,每次添加片段时,都会创建一个新实例,但不会销毁。
答案 0 :(得分:0)
如Fragment Lifecycle所示,作为背书堆一部分的片段通常保持在stopped
状态,而不是destroyed
。 onDestroyView()
是销毁阶段的一部分,如果片段仅为stopped
,则不会被调用。
是的,这是正常的。请尝试使用onStop()
。
答案 1 :(得分:0)
2天后,我终于发现了问题。这似乎是一个Xamarin错误。我已将目标从Android 8.0更改为Android 7.1。我编译它,它工作正常。然后我又回到了8.0,它也开始工作了。
我也可以用Xamarin示例复制这个解决方案。