2016-08-22 47 views
0

我有一些片段是视图传呼机的一部分。那些工作很好。然而,在视图寻呼机中的片段之上,我想把片段放在它们之上(即嵌套或子片段)。因此,在父片段的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),但他们似乎没有与这个子片段设置很好地工作。当我的孩子片段被显示时,我甚至会使用什么?

谢谢!

迈克

+0

这个问题不是重复的吗? http://stackoverflow.com/questions/9190855/clicking-on-the-fragment-invoke-activity-behind-it – LeonardoSibela

+0

它似乎是重复的,但我确实尝试搜索之前我张贴(我一直这样做),这没有为我而来。也许我的搜索条件已关闭。无论如何,这与下面的答案一起帮助。 –

+0

别担心。我很容易找到它,因为我以前经历过同样的问题,所以我确切知道要搜索什么。我会建议关闭它作为重复。 – LeonardoSibela

回答

1

只需设置你的片段点击,因此它不会允许点击通过。别担心,由于片段的背景不是可点击的背景,因此您不会看到任何点击。

+0

该解决方案帮助解决了我的问题。我在代码中而不是在xml中。所以,对于每个控制(按钮等),我有一个问题,我做了controlName.Clickable = true;谢谢! –

相关问题