Android-使用多个选项卡在活动中获取片段实例

Android-使用多个选项卡在活动中获取片段实例,android,interface,tabs,dialog,fragment,Android,Interface,Tabs,Dialog,Fragment,我在引用活动中已实例化的片段时遇到问题 我有两个选项卡作为操作栏的一部分,每个选项卡都实例化了同一片段的一个实例 碎片=玩家 Tab1=Player1(播放器片段,包含播放器1数据库中的详细信息) Tab2=Player2(播放器片段,包含播放器2数据库中的详细信息) 玩家片段包括一个可以使用数字选择器修改的字段(玩的游戏)。 所以我已经创建了一个接口,并在我的活动中实现了该接口。当在片段上单击按钮时,它将调用界面,该界面在活动上创建一个对话框片段以显示数字选择器。一旦数字选择器关闭并将玩过的游

我在引用活动中已实例化的片段时遇到问题

我有两个选项卡作为操作栏的一部分,每个选项卡都实例化了同一片段的一个实例

碎片=玩家

Tab1=Player1(播放器片段,包含播放器1数据库中的详细信息) Tab2=Player2(播放器片段,包含播放器2数据库中的详细信息)

玩家片段包括一个可以使用数字选择器修改的字段(玩的游戏)。 所以我已经创建了一个接口,并在我的活动中实现了该接口。当在片段上单击按钮时,它将调用界面,该界面在活动上创建一个对话框片段以显示数字选择器。一旦数字选择器关闭并将玩过的游戏数传回活动,我就想在正确的片段上更新该值(因此,如果按下选项卡2上的按钮,则播放器2上的值应该得到更新)

这就是我画空白的地方

我使用actionBar.addTab添加每个选项卡,并使用实现actionBar.TabListener的TabsListener类在按下每个选项卡时替换正确的片段。 ActionBar为您处理FragmentManager的内容。。。 我认为在我的活动中需要做的是获取当前片段,这样我就可以调用该片段中的方法来更新它。但是,当通过TabListener添加片段时,我看不到一种方法可以获取并存储片段实例的ID,或者为其设置标记。如果可以,那么我可以使用getFragmentByID或getFragmentByTag来查找它

关于我应该怎么做的任何想法


我认为我有一个完全不同的解决方案,通过在数字选择器中进行数据库更新,然后在DialogFragment关闭时让onResume()更新可见片段中的值,但在DialogFragment关闭时似乎不调用onResume()


我没有发布代码示例,因为我希望上面的内容可以简化问题。

您可以指定TabListener(),并在重新选择选项卡时收到通知,在这里您可以更新UI

在我看来,您应该在用户从对话框中选择值后更新数据库。您可以为对话框上的不同按钮指定OnClickListener,并在选择或取消某些内容时收到通知

例如:


}FragmentTransaction的“add”和“replace”方法都有许多重载。使用具有以下参数的选项:

 (int containerViewId, Fragment fragment, String tag)

…允许您为片段提供标记名,随后可以通过调用findFragmentByTag来检索该片段。

能否显示TablListener实现?在onTabSelected()中添加片段时,应该能够设置标记。看到你的代码,我希望能给出一个更清晰的解释。谢谢奈杰尔克。你解决了我的问题。我没有意识到fragmentTransaction.replace有一个不同的覆盖,它允许指定一个标记作为第三个输入。通过设置这个,我就能够找到这个片段并更新它。请将此作为答案发布,然后我可以接受。谢谢Manveer,但你还没有真正回答我的问题。我理解标签的泛型,所以这没有帮助。
 (int containerViewId, Fragment fragment, String tag)