通过其他类

时间:2016-03-19 16:14:32

标签: android listview android-fragments

我有一个片段,它有一个带有视图列表视图的适配器。 每个视图都有一个按钮,打开一个自定义对话框,里面有两个按钮 - “是”/“否”。 (正面和负面标签)。 我无法实现那些标签压缩的回调。

在我正在使用的自定义对话框中,我总是发送主机片段的TAG,然后执行以下操作:

AlertDialogFragmentCallbacks initiator;
initiator = (AlertDialogFragmentCallbacks) getFragmentManager().findFragmentByTag(mInitiatorFragmentTag);
initiator.onAlertDialogPositiveClick(mId, this);

它可以很好地处理碎片,但现在我的启动器不是片段,而是片段适配器内部的简单视图。

在调试时,我可以看到mInitiatorFragmentTag确实是视图的标签。但是如何使用该标签找到该视图呢?

1 个答案:

答案 0 :(得分:0)

您可以创建一个处理点击的专用类。传递它的构造函数:

  • 您将为其包含的数据访问的视图层次结构的根。
  • 托管片段的活动参考。
  • 完成交易所需的任何其他数据项。

例如(我这里没有所有细节,所以我正在制作东西):

public class MyClickHandler implements WhateverClickInterface {
    private View root;
    private Activity activity;

    public MyClickHandler(View root, Activity activity) {
        this.root = root;
        this.activity = activity;
    }

    public void whateverInterfaceMethod() {
        // Access views for data
        // Use activity to start a fragment transaction
        // Close the dialog
    }
}

然后,您可以为每个将调用它的按钮注册此类的新实例。

基本上,只需确保为您的点击处理程序提供所有相关数据,以便决定如何继续。