gpt4 book ai didi

android - ActionBar 菜单在 ActionMode 下不起作用

转载 作者:行者123 更新时间:2023-11-30 01:16:01 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com