Android静态内部片段和接口
从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
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选择我的坏。。是的,你仍然不能实现一个在类内部的方法,不管是静态的还是非静态的,但是你可以在类的括号内调用它