2016-04-11 11 views
1

Ich habe ein Fragment mit Kontextaktionsmodus. Der Kontextaktionsmodus funktioniert großartig. Der ActionMode.Callback hat eine Methode onActionItemClicked. Ich möchte diese Methode in meiner Klasse überschreiben. unten ist der Code, den ich versuchte. Die override-Methode in meiner Klasse wird nicht aufgerufen.So überschreiben onActionItemClicked von ActionMode in Android

public class HouseHoldMembersFragment extends ActionBarCallBack { 
     ActionMode mMode; 
     public HouseHoldMembersFragment() { 
     } 
    @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

     } 

     @Override 
     public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 

      return false; 
     } 
     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
           Bundle savedInstanceState) { 

      View view = inflater.inflate(R.layout.fragment_house_hold_members, container, false); 
      ExpandList = (ExpandableListView) view.findViewById(R.id.expandable_list_view); 


      ExpandList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
       @Override 
       public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
        if (ExpandableListView.getPackedPositionType(id) == ExpandableListView.PACKED_POSITION_TYPE_GROUP) { 
         mMode = view.startActionMode(new ActionBarCallBack()); 


         return true; 
        } 
        return false; 
       } 
      }); 
      return view; 
     } 

Dies ist die Implementierungsklasse

public class ActionBarCallBack extends Fragment implements ActionMode.Callback { 
    ActionMode mMode; 

    @Override 
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 

     return false; 
    } 

    @Override 
    public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
     // TODO Auto-generated method stub 
     mode.getMenuInflater().inflate(com.deerwalk.androidcommon.R.menu.context_action_menu, menu); 
     return true; 
    } 

    @Override 
    public void onDestroyActionMode(ActionMode mode) { 
     mMode = null; 

    } 

    @Override 
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
     // TODO Auto-generated method stub 

     mode.setTitle("Action"); 
     return false; 
    } 


} 

ich die ActionMode eine gemeinsame und overide die onActionItemClicked Methode machen wollen. Bis jetzt habe ich versucht, aber meine Klasse onActionItemClicked Methode wird nicht aufgerufen. Wie man dieses Problem löst.

+0

'Die Überschreibung Methode in meiner Klasse nicht called' wie wissen Sie? Es enthält nicht einmal Logik. – F43nd1r

Antwort

1

Versuchen Sie Folgendes:

ExpandList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() 
{ 
    @Override 
    public boolean onItemLongClick (AdapterView <?> parent, View view,int position, long id){ 
    if (ExpandableListView.getPackedPositionType(id) == ExpandableListView.PACKED_POSITION_TYPE_GROUP) { 
     startSupportActionMode(new ActionMode.Callback() { 
      @Override 
      public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 

       return false; 
      } 

      @Override 
      public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
       // TODO Auto-generated method stub 
       mode.getMenuInflater().inflate(com.deerwalk.androidcommon.R.menu.context_action_menu, menu); 
       return true; 
      } 

      @Override 
      public void onDestroyActionMode(ActionMode mode) { 
       mMode = null; 

      } 

      @Override 
      public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
       // TODO Auto-generated method stub 

       mode.setTitle("Action"); 
       return false; 
      } 

     }); 
    } 
} 
+0

Ich möchte nicht alle Methoden implementieren, nur um onActionItemClicked zu implementieren. Wie kann ich das tun –

+0

Geben Sie einfach false für die Methoden, die Sie nicht implementieren möchten und nichts anderes schreiben. Ich habe nur kopiert, was Sie für die Implementierungen geschrieben haben. – ozo

Verwandte Themen