我是 Android 开发的新手,我希望在 ActionMode 上再多一个菜单,包括剪切、复制、全选。我想在此菜单中添加“标记”。
所以我在下面的main.xml中添加了一个项目,就是它的以下代码。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.fn.MainActivity" >
<item
android:id="@+id/action_settings1"
android:orderInCategory="100"
android:onClick="onContextualMenuItemClicked"
android:title="Mark"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never"/>
</menu>
这已经过测试,在大多数手机上都能正常工作,但在少数手机上长按文本,它会显示消息
不幸的是,应用已停止
没有其他进程,我的应用程序突然关闭。
我不知道为什么?有人可以帮我吗?
如果我从那个项目中删除下面这行,它将起作用。
android:onClick="onContextualMenuItemClicked"
但我在 Activity 中触发了那个 onclick,
public void onContextualMenuItemClicked(MenuItem item) {
/*switch (item.getItemId()) {
case R.id.mark:
webView.loadUrl("javascript:doMouseUp();");
break;
default:
System.out.println("default");
break;
}
if (mActionMode != null) {
mActionMode.finish();
}*/
}
更新
@Override
public void onActionModeStarted(ActionMode mode) {
if (mActionMode == null) {
mActionMode = mode;
Menu menu = mode.getMenu();
menu.clear();
mode.getMenuInflater().inflate(R.menu.main, menu);
}
super.onActionModeStarted(mode);
}
最佳答案
看起来您正在使用 ActionBarActivity
扩展 MainActivity。这是Android KitKat 之后才支持的。在版本 5 及更高版本中,它不会产生问题。
您需要使用 Activity 扩展 MainActivity,然后它才适合您。
public class MainActivity extends Activity {
然后,您需要在项目结构中的/res/menu 下有单独的 xml 文件 (myMenu.xml)。
我的菜单.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.fn.MainActivity" >
<item
android:id="@+id/mark"
android:showAsAction="always"
android:onClick="onContextualMenuItemClicked"
android:title="Mark">
</item>
</menu>
复制此方法并根据需要进行更改并在 Activity 中替换。
@Override
public void onActionModeStarted(ActionMode mode) {
if (mActionMode == null) {
mActionMode = mode;
Menu menu = mode.getMenu();
menu.clear();
mode.getMenuInflater().inflate(myMenu, menu);
}
super.onActionModeStarted(mode);
}
就是这样,希望现在对您有用。
关于android - ActionBar 菜单在 ActionMode 下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37856156/