按下后退按钮

时间:2018-01-16 17:04:43

标签: android xamarin.android android-appcompat

在基于片段导航的基本应用程序中,片段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上添加断点,即使按下“返回”按钮,也会看到它永远不会被调用。换句话说,每次添加片段时,都会创建一个新实例,但不会销毁。

2 个答案:

答案 0 :(得分:0)

Fragment Lifecycle所示,作为背书堆一部分的片段通常保持在stopped状态,而不是destroyedonDestroyView()是销毁阶段的一部分,如果片段仅为stopped,则不会被调用。

是的,这是正常的。请尝试使用onStop()

答案 1 :(得分:0)

2天后,我终于发现了问题。这似乎是一个Xamarin错误。我已将目标从Android 8.0更改为Android 7.1。我编译它,它工作正常。然后我又回到了8.0,它也开始工作了。

我也可以用Xamarin示例复制这个解决方案。