2015-09-21 76 views
0

我在一个类内部有一个片段,因为它是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

有在匿名类的'onItemClick'方法和'AllFragment'之间没有任何关系。您需要在'AllFragment'中实现该方法,或者从该类中移除'implements'。 –

回答

1

您正在收到错误,因为您已使您的片段类实现了侦听器,但是您没有实现它的方法。

您应该在片段类中重写方法作为方法,或者您可以简单地移除片段类的实现,因为您已经重写了匿名类中的方法。

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) 
相关问题