【发布时间】:2017-07-11 12:23:57
【问题描述】:
在以下链接https://github.com/iPaulPro/Android-ItemTouchHelper-Demo/blob/master/app/src/main/java/co/paulburke/android/itemtouchhelperdemo/MainFragment.java 中,Activity 对象被强制转换为名为 OnListItemClickListener 的内部接口。
mItemClickListener.onListItemClick(position);
MainFragment 类的完整源码如下:
public class MainFragment extends ListFragment {
public interface OnListItemClickListener {
void onListItemClick(int position);
}
private OnListItemClickListener mItemClickListener;
public MainFragment() {
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mItemClickListener = (OnListItemClickListener) activity;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
final String[] items = getResources().getStringArray(R.array.main_items);
final ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(),
android.R.layout.simple_list_item_1, items);
setListAdapter(adapter);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
mItemClickListener.onListItemClick(position);
}
}
为什么要将活动对象强制转换为接口?
stackoverflow How is it possible to cast an Android Activity to an interface? 有类似问题,但对我来说并不满意,它没有回复我的问题。
【问题讨论】:
-
查看添加
MainFragment的Activity。 -
你为什么不问问写这段代码的人呢?只有他自己知道。
-
@MuratK。我更新了我的问题。我想知道为什么将活动投射到界面..
-
面向对象的设计说“程序是接口而不是实现”——如果你理解了,你就会理解这个设计
标签: java android android-activity interface casting