Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 菜单项不会显示在操作栏中_Java_Android - Fatal编程技术网

Java 菜单项不会显示在操作栏中

Java 菜单项不会显示在操作栏中,java,android,Java,Android,我无法在操作栏中显示操作按钮。我肯定我只是误解了应该怎么做。我做错了什么 我正在developer.android.com上浏览教程,我刚刚在操作栏中添加了一项。在本教程中,搜索按钮的showAsAction设置为ifRoom,它应该在操作栏中显示该按钮,但它仅在溢出菜单中显示 我认为可能没有足够的空间,所以我尝试将应用程序的标题缩减为一个字母。我已尝试删除按钮的标题。我尝试将showAsAction更改为除never之外的所有值 更新20150830_151538-0500:根据答案中的建议

我无法在操作栏中显示操作按钮。我肯定我只是误解了应该怎么做。我做错了什么

我正在developer.android.com上浏览教程,我刚刚在操作栏中添加了一项。在本教程中,搜索按钮的showAsAction设置为ifRoom,它应该在操作栏中显示该按钮,但它仅在溢出菜单中显示

我认为可能没有足够的空间,所以我尝试将应用程序的标题缩减为一个字母。我已尝试删除按钮的标题。我尝试将showAsAction更改为除never之外的所有值

更新20150830_151538-0500:根据答案中的建议将android:showAsAction更改为app:showAsAction。结果是“搜索”按钮根本不显示。甚至在溢出的情况下也没有。我还包括了完整的MyActivity.java,而不仅仅是原始问题中包含的片段

更新20150831_222922-0500:存在两个问题。首先,我使用的是android:showAsAction,而不是app:showAsAction。这一点在前两个答案中立即指出。第二个问题是,我使用的图标大小不对。我使用了一个_48dp.png图标,这导致该项目根本不显示,因为它与操作栏的大小不符。这一点在@ci_对答案的评论中指出

注意:Android Studio生成的MyActivity.java的原始版本为菜单添加了一个menu_my.xml文件。此菜单文件仅包含使用app:showAsAction=never的设置操作。在本教程之后,我替换了onCreateOptions菜单类的内容。除非我误解了什么,这个原始的menu_my.xml文件根本没有被使用,但因为我开始正确地使用app:而不是android:来显示设置项是唯一显示的项目。我怀疑这有什么关系,但我想提一下以防万一

MyActivity.java:

包com.ghodmode.myfirstapp; 导入android.content.Intent; 导入android.support.v7.app.AppActivity; 导入android.os.Bundle; 导入android.view.Menu; 导入android.view.MenuInflater; 导入android.view.MenuItem; 导入android.view.view; 导入android.widget.EditText; 公共类MyActivity扩展了AppCompatActivity{ 公共最终静态字符串EXTRA_MESSAGE=com.ghodmode.myfirstapp.MESSAGE; @凌驾 受保护的void onCreateBundle savedInstanceState{ super.onCreatesavedInstanceState; setContentViewR.layout.activity_my; } @凌驾 公共布尔onCreateOptions菜单菜单{ //为菜单项充气,以便在操作栏中使用 MenuInflater充气机=getMenuInflater; 充气机。充气机。菜单。主活动\动作,菜单; 返回super.onCreateOptions菜单; } @凌驾 公共布尔值OnOptions ItemSelectedMenuItem项{ //处理操作栏项目单击此处。操作栏将 //自动处理Home/Up按钮上的点击,只要 //在AndroidManifest.xml中指定父活动时。 int id=item.getItemId; //noinspection SimplifiableIf语句 如果id==R.id.action\u设置{ 返回true; } 返回super.on选项ItemSelectedItem; } /** *当用户单击“发送”按钮时调用 */ 公共无效sendMessageView视图{ Intent Intent=newintentthis,DisplayMessageActivity.class; EditText EditText=EditText findviewbydr.id.edit_消息; 字符串消息=editText.getText.toString; intent.putextra_消息,消息; 星状体; } } main_activity_actions.xml:


使用支持库中的ActionBarActivity或AppCompatActivity时,这是一个常见的错误,我假设您在这里使用

在这种情况下,showAsAction必须使用特殊的appcompat命名空间:


如果这仍然不适用于您,请将showAsAction更改回never。如果它现在出现在溢出菜单中,则表明您的图标有问题。

尝试将以下内容添加到您的菜单xml中:

xmlns:app="http://schemas.android.com/apk/res-auto" 
然后使用:

app:showAsAction="always"

如果您使用的是ActionBarActivity,则必须使用appcompat命名空间。我显然使用的是AppCompatActivity,但将android:showAsAction更改为app:showAsAction并没有改变任何内容。xmlns:app=http://schemas.android.com/apk/res-auto 他已经在那里了。我认为我没有使用AppCompatActivity,因为我下面的教程建议我必须采取额外的步骤来实现它。我猜Android Studio在创建新项目时生成的代码会自动使用AppCompatActivity。我刚刚意识到,将Android:showAsAction更改为app:showAsAction后,搜索项根本不会出现在溢出中。所以,即使你的推荐是
从某种意义上说,这对我来说是倒退了一步。听起来很不寻常。把ifRoom改回never。如果它显示在溢出中,则表示您的图标有问题。如果不是,则不是在查看右菜单文件。清理项目并重建。可能有构建错误?这就解决了它!将其设置为“从不”将使其显示在溢出中。将其设置回ifRoom并删除android:icon行使其显示在我想要的位置。现在我必须弄清楚我的图标有什么问题,这些图标是刚从下载的,但这是另一个话题。谢谢你的帮助!图标的问题与我选择的大小有关。当我下载材料图标包时,我不知道图片的不同版本是什么。。。18磅,24磅,36磅,48磅。我只是选择了48dp,没有特别的原因。它只适用于24dp,如ic_search_white_24dp.png。我认为这与我还没有学会如何改变的动作条的大小有关。无论如何,我可能不想更改默认值@ci_u请将您的最后一条评论添加到您的答案中,以便在其他人遇到此帖子时更容易找到。您的建议与@ci_u的建议基本相同。app部分已经存在,因为Android Studio包含了它,但是将Android:showAsAction更改为app:showAsAction或者ifRoom或者always都会导致搜索按钮根本不出现。甚至在溢出的情况下也没有。
app:showAsAction="always"