java - Fragment不是抽象的,不会重写抽象方法

标签 java android

我在类中有一个 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/

相关文章:

java - 点与平均 vector 之间的马哈拉诺比斯距离始终相同

android - 如何在文本观察器中检索回收器 View 项目位置?

android - 谷歌地图在 Release模式下未在 Android 上显示

java - 使用 ObservableMap 填充并同步 ComboBox?

按下向上和向下箭头时,Java FX 无法识别 KeyCode.UP 或 KeyCode.Down (MacBook Pro 18 - Mojave 10.14.5)

java - 如何使用 lucene 索引查询国家代码?

android - 帐户 : Mockito Test Account

java - 如何使用 Wicket 的 AjaxLink 创建可更新面板?

java - 如何在不记住密码的情况下以编程方式连接到 Wifi?

android - Google maps Places API 附近搜索自动签到