我刚刚阅读“Head First Android”并遇到了这段代码,
public class WorkoutListFragment extends ListFragment{
static interface WorkoutListListener{
void itemClicked(long id);
}
}
// Inside the same class there is this Inner Interface
// declaration of the above Interface,
// Declaration style : 01
private WorkoutListListener listener;
如果我在下面写这样的代码片段会更好吗?
// why can't i declare the Inner Class like this in the same class,
// Because I write WorkoutListFragment.WorkoutListListener while implementing it,
// Declaration style : 02
private WorkoutListFragment.WorkoutListListener listener;
我的查询是这里的约定,声明样式1还是2?因为正如我在StackOverflow中看到的那样,在实现内部接口时,我们使用外部类或接口名称,然后给出Dot,然后编写内部接口名称。像这样,
public SomeClass implements SomeOuterClass.AnInnerInterface{
....
}
N.B:请注意,评论不在实际代码中。为了清晰起见,我添加了它们。
答案 0 :(得分:0)
如上所述,您找到的模式是用于Fargment和Activity之间的通信。 有关详细信息,请参阅here。
如果您想要调用interface
的任何方法,
listener.itemClicked(long id);
将执行实现的方法。
此模式用于实现interface
,如下所示:
@Override
void itemClicked(long id){
// Add your code here
}
感谢。
答案 1 :(得分:0)
我从你的问题中得到的是,你也不会对约定感到困惑,而是宣传和使用Interface的方式。
如果我们谈论约定,可以通过以下方式使用接口,
public SomeClass implements SomeOuterClass.AnInnerInterface{
....
}
因为这是你告诉他们的方式#Some; SomeClass"实现" SomeOuterClass"的接口。这意味着" AnInnerInterFace"是" SomeOuterClass"。
中存在的界面所以这就是你使用public" AnInnerInterFace"这就是你可以访问它的方式。和#34; SomeClass"必须实现它的方法(在接口中声明,即" AnInnerInterface"。你不需要像上面所说的那样得到它的对象
private WorkoutListFragment.WorkoutListListener listener;
这种方式不好,没有用,为什么你会在其他课上这样做?接口需要实现。我没理由你为什么要访问它的对象?
所以这是要走的路。但是,如果您想进一步阅读如何以及应该采用什么约定,请考虑阅读this