【问题标题】:How to use contextual action mode with SherlockListFragment如何在 SherlockListFragment 中使用上下文动作模式
【发布时间】:2013-01-13 20:10:49
【问题描述】:

我想在我的应用程序中使用上下文操作栏 (CAB),但与旧版本的 Android 不兼容,因此我正在使用本教程:http://www.miximum.fr/tutos/849-porting-the-contextual-anction-mode-for-pre-honeycomb-android-apps 我的代码是:

public class SongsFragment extends SherlockListFragment implements
    LoaderManager.LoaderCallbacks<Cursor>, OnLongClickListener{

...
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    activity = this.getActivity();
    ...
    mMode = null;
    mListView = getListView();
    mListView.setItemsCanFocus(false);
    mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    mListView.setOnLongClickListener(this);

}

@Override
public boolean onLongClick(View v) {
    SparseBooleanArray checked = mListView.getCheckedItemPositions();
    boolean hasCheckedElement = false;
    for (int i = 0; i < checked.size() && !hasCheckedElement; i++) {
        hasCheckedElement = checked.valueAt(i);
    }

    if (hasCheckedElement) {
        if (mMode == null) {
            mMode = activity.startActionMode(mActionModeCallback);
        }
    } else {
        if (mMode != null) {
            mMode.finish();
        }
    }
    return false;
}

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

    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        // Create the menu from the xml file
        activity.getSupportMenuInflater().inflate(R.menu.cab_songs, menu);
        return true;
    }
    ...

我有错误:

  1. -"activity.startActionMode(mActionModeCallback);":Activity类型中的方法startActionMode(ActionMode.Callback)不是 适用于参数(ActionMode.Callback)
  2. -activity.getSupportMenuInflater().inflate(R.menu.cab_songs, menu);":getSupportMenuInflater() 方法未定义 输入 FragmentActivity

有什么想法吗?使用 sherlock 的 CAB 是否有另一种解决方案?

【问题讨论】:

标签: android android-actionbar actionbarsherlock


【解决方案1】:

ActionModeMenuInflater 的导入更改为它们的 ActionBarSherlock 等效项(com.actionbarsherlock.view.ActionModecom.actionbarsherlock.view.MenuInflater)。

【讨论】:

    【解决方案2】:

    我解决了:

    getSherlockActivity().startActionMode(mActionModeCallback);
    ...
    mode.getMenuInflater().inflate(R.menu.cab_songs, menu);
    

    现在,我想在用户执行“单击”时执行一个操作,并在用户执行“长按”时执行另一个操作。我有“onItemLongClick”和“onListItemClick”,但有时不会调用longClick,当我释放“onListItemClick”时会调用它。我该怎么做?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多