是否有人有教程在使用支持库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)
我不知道该怎么做,我找不到解释片段中的实现并使用支持库的教程。
感谢您的阅读。
答案 0 :(得分:1)
如果您使用的是支持库,则应使用
mActionMode = getActivity().startSupportActionMode(mActionModeCallback);
而不是
mActionMode = getActivity().startActionMode(mActionModeCallback);
答案 1 :(得分:1)
如果您使用的是动作条库,请使用此功能。
ActionBarActivity activity=(ActionBarActivity)getActiivty();
activity.startSupportActionMode(mActionModeCallback);
如果它是简单的活动,那么更喜欢这个
getActivity().startActionMode(mActionModeCallback);