片段不是抽象的,不会覆盖抽象方法

时间:2015-09-21 22:55:59

标签: java android

我在一个类中有一个Fragment,因为它是ViewPager的一部分。 但是,在我的外部类中,我正在使用NavigationDrawer的第三个部分库实现OnItemClickListener。但是在我的内部类中,我有一个OnItemClickListener,它是Android SDK界面。但由于实现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 {

为什么我会收到此错误?

1 个答案:

答案 0 :(得分:1)

您收到错误是因为您使片段类实现了Listener,但您没有实现它的方法。

您应该将方法重写为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
    }
}

然后将监听器分配给GridView

gridView.setOnClickListener(this)