当前位置: 首页 > 知识库问答 >
问题:

如何引用内部实现的类的片段?

司空玮
2023-03-14

我有一个活动,有一些相同类型的片段。我有一份清单。只要我点击一个列表项,我就需要调用一个activity方法,传递点击发生的片段。

我认为这是一个相当愚蠢的问题,但我搞不懂。

public class MapFragment extends Fragment {

    Activity activity;

    public void onAttach(Activity activity) {
        super.onAttach(activity);
        this.activity = activity;
    }

    public MapFragment() {
        /* here I could refer to the fragment using "this" */
    }

    private class MyListOnItemClick implements AdapterView.OnItemClickListener {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            /* how can I refer to the fragment here?  */

            Fragment f = getFragmentSomeWay();

            (CustomActivity)activity.doSomethingWith(f);

        }
    }
}

共有2个答案

邴俊达
2023-03-14

您的片段可以实现AdapterView。OnItemClickListener。

public class MapFragment extends Fragment implements AdapterView.OnItemClickListener {

  @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
           requireActivity().doSomethingWith(f);

        }

有些人会在这里使用匿名类。

 adapter.setOnItemClickListener(AdapterView.OnItemClickListener listener = new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(final AdapterView<?> adapterView, final View view, final int i, final long l) {
                requireActivity().doStuff();
            }
        };
岑叶秋
2023-03-14

只需参考封闭类这个

  Fragment f = MapFragment.this;
 类似资料:
  • 数据层次结构是: < li >地点 < ul > < li>id < li >名称 < li >图像 < ul > < li >原稿_图像 < ul > < li>id < li >图像url < li >宽度 < li >高度 编号 image_url 宽度 高度 原始图像等于缩略图图像。 我的地方类是 我的图像课是 我的图像类是 当我编译这个项目时,房间库返回错误 错误:在com.test.r

  • 问题内容: 在Java中,匿名内部类可以在其局部范围内引用变量: 我的问题是这实际上如何实施?如何实现匿名内部实现,为什么必须如此? 问题答案: 编译器会自动为您的匿名内部类生成一个构造函数,并将您的局部变量传递给该构造函数。 构造函数将此值保存在也称为的类变量(字段)中,该变量将在“闭包”中使用。 为什么它必须是最终的?好吧,让我们探讨一下它不在的情况: 在情况A中,还需要更改字段,我们假设这是

  • 问题内容: 我正在使用Apache Commons EqualsBuilder来为非静态Java内部类构建equals方法。例如: 除了声明方法之外,是否有可以参考的引用的语法?有点像(不起作用)? 问题答案: 没有。 最好的方法可能是您所建议的:将getFoo()方法添加到内部类中。

  • 问题内容: 我正在扩展ArrayList来创建一个自定义ArrayList,可以在迭代它的同时使用常规ArrayList方法进行修改。为此,我还要创建一个迭代器。 在我的hasNext()和next()方法期间,我需要确保列表没有被修改(可以在任何其他时间修改)。因此,我需要在我的shared()块中引用我的封闭类型。 问题答案: 。因此,在您的情况下,它将为。

  • 在以下片段中: 有没有办法从内部匿名类引用匿名类的外部实例? 第二个错误是在解决方案上,我在这里找到了一个匿名内部类的外部类的关键字。这些问题似乎共享一些概念和问题空间,但性质不同。

  • 我知道如果我想扩展内部类,我应该这样做: 但是在这种情况下,我不明白该怎么办?如何获取内部对象的封闭实例? 此变体不编译: