Android静态内部片段和接口

Android静态内部片段和接口,android,android-fragments,Android,Android Fragments,从Android文档中可以看出,片段应该是一个静态的内部类。似乎他们还应该使用一个接口与活动进行通信。当我尝试同时做这两件事时,我得到了一个循环依赖 public class MyActivity extends FragmentActivity implements MyFragment.Listener{ // Activity methods @Override public void foo(){ } static class MyFragm

从Android文档中可以看出,片段应该是一个静态的内部类。似乎他们还应该使用一个接口与活动进行通信。当我尝试同时做这两件事时,我得到了一个循环依赖

public class MyActivity extends FragmentActivity implements MyFragment.Listener{
    // Activity methods

    @Override
    public void foo(){

    }

    static class MyFragment extends Fragment{
    interface Listener{
        public void foo();
    }
    // Fragment Methods
    }

}

给我一个循环依赖错误。正确的设计是什么?

如果
片段
已经是
内部类
,那么片段就不需要实现
接口
,只需要与
活动
通信。如果片段是内部类,则可以直接与片段内部的
MyActivity
通信


如果它是一个单独的类,那么您可以实现一个接口来与活动进行通信。

我不确定您为什么认为它需要是一个静态的内部类,但事实并非如此。您可以(也可能应该)在它们自己的文件中定义片段。通过阅读我链接的文章,我认为它们应该是静态的内部类。所有示例都显式显示了static关键字,它只适用于内部类。然而,在进一步阅读后,外部类是隐式静态的,所以可能它们只是想弄清楚(这当然会引起混乱)。我的示例中有一个输入错误,外部类不应该是静态的。因此,静态内部类不能调用它的(也是非静态的)方法。@GDanger您不能使扩展活动类成为静态的,而且如果您想通过静态方式实现接口,那么您应该为它创建一个新类it@GDanger选择我的坏。。是的,你仍然不能实现一个在类内部的方法,不管是静态的还是非静态的,但是你可以在类的括号内调用它