从ListFragment中的自定义CursorAdapter启动操作模式

时间:2014-03-21 17:28:55

标签: android android-listfragment android-cursoradapter contextual-action-bar android-actionmode

我正在尝试为上下文操作栏启动操作模式,但我遇到了问题。我正在使用自定义CursorAdapter来扩展ListFragment的类,该类包含扩展ActionBarActivity的类。

结构
GameListActivity(ActionBarActivity)
---- GameListFragment(ListFragment)
---- ---- custom_adapter(CursorAdapter)

我尝试在custom_adapter中的onClick侦听器中启动操作模式。目前,我在ActionBarActivity中有ActionMode.Callback:

public static final ActionMode.Callback AnActionMode = new ActionMode.Callback() {
    // standard funcs (onCreateActionMode, etc)
}

我觉得这会更适合ListFragment,但我已经尝试过没有更好的运气。

在我的自定义CursorAdapter中,我有一个函数:

private void set_action_mode() {
    if (checked_count > 0)
        if (!is_action_mode_showing)
            ((GameListActivity) m_context).startActionMode(GameListActivity.AnActionMode);
}

我得到的错误是:

Error:(142, 47) error: method startActionMode in class Activity cannot be applied to given types;
required: android.view.ActionMode.Callback
found: android.support.v7.view.ActionMode.Callback
reason: actual argument android.support.v7.view.ActionMode.Callback cannot be converted to android.view.ActionMode.Callback by method invocation conversion

两个类导入(我认为)是正确的类:

import android.support.v7.view.ActionMode;

我原来跟this链接,但他的实现似乎也不适合我。

无论如何都要做我正在做的事情?

1 个答案:

答案 0 :(得分:4)

我认为你应该使用

  

startSupportActionMode

而不是

  

startActionMode

希望它有所帮助!

PS:看看你的sintaxis。 Java约定说所有变量,对象或方法的名称必须以小写开头,并且不允许使用下划线。您似乎正在使用C命名的样式。您可以在oracle tutorials找到更多信息 和here