我在类中有一个 Fragment,因为它是 ViewPager 的一部分。 但是,在我的外部类中,我正在从 NavigationDrawer 的第三方库实现 OnItemClickListener。但在我的内部类中,我有一个 OnItemClickListener,它是 Android SDK 接口(interface)。但由于未能实现 onItemClick 方法,它给了我一个错误,而我实际上已经实现了该方法。
内部类实现:
public static class AllFragment extends Fragment implements AdapterView.OnItemClickListener
onItemClick方法的实现:
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v,
int position, long arg3) {
String selectedItem;
if (position % 2 == 0)
selectedItem = "Facebook";
else
selectedItem = "Twitter";
Toast.makeText(getActivity(),
"Selected Item: " /*+ GridViewCustomAdapter.titles.get(position)*/,
Toast.LENGTH_SHORT).show();
Intent showItem = new Intent(getActivity(), ShowAdvert.class);
showItem.putExtra("objectId", objectIdList.get(position));
startActivity(showItem);
}
});
错误:
Error:(327, 16) error: AllFragment is not abstract and does not override abstract method onItemClick(AdapterView<?>,View,int,long) in OnItemClickListener
如果我不写 new AdapterView.OnItemClickListener()
而只是写 new OnItemClickListener()
,它会从外部类调用 OnItemClickListener,我我不感兴趣。顺便说一句,外部类开始看起来像这样:
public class MainActivity extends NavigationLiveo implements
br.liveo.interfaces.OnItemClickListener {
为什么我会收到此错误?
最佳答案
您收到错误是因为您使 fragment 类实现了监听器,但没有实现它的方法。
您应该将该方法重写为 fragment 类中的方法,或者,您可以简单地删除 fragment 类的实现,因为您已经重写了匿名类中的方法。
public static class AllFragment extends Fragment implements AdapterView.OnItemClickListener {
// constructor and methods
// ...
@Override
public void onItemClick(AdapterView<?> arg0, View v,
int position, long arg3) {
// your implementation
}
}
然后将Listener分配给GridView
gridView.setOnClickListener(this)
关于java - Fragment不是抽象的,不会重写抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32705806/