2014-09-19 144 views
0

沒有人有教程來實現使用支持庫v7(appcomat_v7)的片段中的CAB嗎?上下文片段中的操作欄

我無法找到任何加上developer.android教程是不明確的。

這是我的代碼到目前爲止。我正在做一個簡單的測試程序,當您選擇列表中的項目時,會出現上下文操作欄,其中會顯示像選擇x項目之類的東西並顯示刪除按鈕。

我想在一個片段中做到這一點,所以這裏發佈的所有代碼都在一個片段內。

上下文酒吧XML文件

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:idk="http://schemas.android.com/apk/res-auto" > 

    <item 
     android:id="@+id/menu_delete" 
     android:icon="@android:drawable/ic_menu_delete" 
     android:orderInCategory="100" 
     idk:showAsAction="ifRoom|withText" 
     android:title="Delete"/> 

</menu> 

這是ActionMode.Callback接口的實現

private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() 
{ 

    // Called when the user selects a contextual menu item 
     @Override 
     public boolean onActionItemClicked(ActionMode mode, MenuItem item) 
     { 
      // TODO Auto-generated method stub 
      switch(item.getItemId()) 
      { 
      case R.id.menu_delete: 
       return true; 

      } 

      return false; 
     } 


     //// Called when the action mode is created; startActionMode() was called 
     @Override 
     public boolean onCreateActionMode(ActionMode mode, Menu menu) 
     { 
      // TODO Auto-generated method stub 
      mode.getMenuInflater().inflate(R.menu.delete_only, menu); 
      return true; 
     } 

     // Called when the user exits the action mode 
     @Override 
     public void onDestroyActionMode(ActionMode mode) 
     { 
      // TODO Auto-generated method stub 
      mActionMode = null; 
     } 

     //// Called each time the action mode is shown. Always called after onCreateActionMode, but 
     // may be called multiple times if the mode is invalidated. 
     @Override 
     public boolean onPrepareActionMode(ActionMode mode, Menu menu) 
     { 
      // TODO Auto-generated method stub 
      return false; 
     } 
}; 

這是對項目點擊監聽器列表視圖

@Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) 
    { 
     // TODO Auto-generated method stub 
     if(listItemSelections.contains(1) && mActionMode == null) 
     { 
      mActionMode = getActivity().startActionMode(mActionModeCallback); 
     } 

    } 

這是給我的線他錯誤

mActionMode = getActivity().startActionMode(mActionModeCallback); 

它說

The method startActionMode(ActionMode.Callback) in the type Activity is not applicable for the arguments (ActionMode.Callback) 

林不知道該怎麼做,我不能找到一個教程,說明片段內執行,並使用支持庫。

謝謝您的閱讀。

回答

1

如果您使用的操作欄庫,然後使用這個。

ActionBarActivity activity=(ActionBarActivity)getActiivty(); 
activity.startSupportActionMode(mActionModeCallback); 

,如果是簡單的活動則比較喜歡這個一個

getActivity().startActionMode(mActionModeCallback); 
+0

感謝,認爲工作 – user3364963 2014-09-20 06:57:05

+0

你總是歡迎參觀。很高興幫助你! – Piyush 2014-09-20 06:58:34

+0

工具欄android的東西是abotu – Harsha 2016-08-26 07:12:37

1

如果您使用支持庫,那麼你應該使用

mActionMode = getActivity().startSupportActionMode(mActionModeCallback); 

而不是

mActionMode = getActivity().startActionMode(mActionModeCallback); 

詳細信息請參考Support v7 ActionMode CallBack