【问题标题】:When I show a fragment the objects below still respond to clicks当我显示一个片段时,下面的对象仍然响应点击
【发布时间】:2016-08-22 19:17:22
【问题描述】:

我有一些片段是视图寻呼机的一部分。那些工作正常。但是,在视图分页器中的片段之上,我想将片段放在它们之上(即嵌套或子片段)。因此,在父片段的 OnCreateView 中,我继续声明我的子片段,然后立即将其隐藏。

        optionsFragment = new TrackOptions();
        var trans = Activity.SupportFragmentManager.BeginTransaction();
        trans.Add(trackOptionsContainer.Id, optionsFragment, "Track Options");
        trans.Hide(optionsFragment);
        trans.Commit();

然后,在父片段中,当我想显示这个子片段时,我只需调用显示它,当我希望它消失时,我再次隐藏它。

起初,我注意到孩子是透明的,我可以通过它看到父母。如果我再设置背景,这个问题就消失了。

但是,现在我注意到,当我查看子项并单击屏幕时,父项仍会响应不可见按钮的事件(单击事件),因为它们位于父项上,显示孩子。

我怀疑这是因为我在展示孩子时还需要明确隐藏父母。它是否正确?如果是这样,这里有两个我不明白的后续问题。 1.我不想每次要显示它时都重新实例化父级。我只想要应用程序启动时创建的一个实例。如果我必须显式隐藏它,如何在使用片段类的相同实例时再次显示它? 2. 我已经阅读了许多不同的选项来在显示片段时获取事件,并且我已经尝试了其中的大多数(OnHiddenChanged、OnResume、UserVisibleHint),但它们似乎都不适用于这个子片段设置。显示我的子片段时我什至会使用什么?

谢谢!

迈克

【问题讨论】:

  • 这个问题不是重复了吗? stackoverflow.com/questions/9190855/…
  • 它似乎是重复的,但我确实在发布之前尝试过搜索(就像我一直做的那样),但这并没有出现在我身上。也许我的搜索词已关闭。无论如何,这与下面的答案一起提供了帮助。
  • 别担心。我很容易找到它,因为我以前遇到过同样的问题,所以我确切地知道要搜索什么。我建议将其关闭为重复。

标签: c# android .net xamarin.android


【解决方案1】:

只需将您的片段设置为可点击,这样就不会允许点击通过。不用担心,因为片段的背景不是可点击的背景,所以您不会看到任何点击。

【讨论】:

  • 这个解决方案帮助解决了我的问题。我是在代码中而不是在 xml 中完成的。因此,对于我遇到问题的每个控件(按钮等),我都做了 controlName.Clickable = true;谢谢!
【解决方案2】:

让你的片段 xml 父布局 android:clickable="true" 现在任何点击都不会发送到片段返回堆栈

【讨论】:

    猜你喜欢
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    相关资源
    最近更新 更多