2016-04-11 12 views
1

私はコンテキストアクションモードのフラグメントを持っています。コンテキストアクションモードはうまく動作しています。 ActionMode.Callbackには、onActionItemClickedメソッドがあります。自分のクラスでこのメソッドをオーバーライドしたいと思います。以下は私が試したコードです。私のクラスのオーバーライドメソッドは呼び出されていません。ここでandroidのActionModeのonActionItemClickedをオーバーライドする方法

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; 
     } 

が実装クラスは

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; 
    } 


} 

である私はActionModeが共通にし、onActionItemClicked方法をオーバライドします。これまでは試しましたが、クラスのonActionItemClickedメソッドが呼び出されていません。この問題を解決する方法。

+0

'私のクラスでオーバーライドメソッドがどのようにあなたは知っていますcalled'されていませんか?それは論理を含んでいません。 – F43nd1r

答えて

1

次のことを試してみてください。

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

私はonActionItemClickedを実装したいすべてのメソッドを実装したくありません。どうすればいいですか –

+0

実装したくないメソッドに対してはfalseを返すだけです。私は実装のためにあなたが書いたものをコピーしました。 – ozo

関連する問題