java 菜单未显示在应用程序中
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/27818294/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Menu not showing in app
提问by Stefan
For some reason my action menu dissapeared in my Android Studio app. I'm following a tutorial to learn how to create an android app but I ended up with this problem.
出于某种原因,我的操作菜单在我的 Android Studio 应用程序中消失了。我正在按照教程学习如何创建一个 android 应用程序,但我最终遇到了这个问题。
Tutorial I'm using atm: http://www.raywenderlich.com/56109/make-first-android-app-part-2
教程我使用 atm:http: //www.raywenderlich.com/56109/make-first-android-app-part-2
This is what my main.xml looks like:
这是我的 main.xml 的样子:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Share item -->
<item
android:id="@+id/menu_item_share"
android:showAsAction="ifRoom"
android:title="Share"
android:actionProviderClass= "android.widget.ShareActionProvider" />
</menu>
menu_main.xml:
menu_main.xml:
<!-- Defines the menu item that will appear on the Action Bar in MainActivity -->
<menu xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Share item -->
<item
android:id="@+id/menu_item_share"
android:showAsAction="ifRoom"
android:title="Share"
android:actionProviderClass= "android.widget.ShareActionProvider"
tools:ignore="AppCompatResource" />
</menu>
What did I do wrong in this code? I didn't get any errors. And I pretty much copy pasted this from the tutorial.
我在这段代码中做错了什么?我没有收到任何错误。我几乎从教程中复制粘贴了这个。
I don't think its my java code but still here it is incase someone thinks the problem is in that code. MainActivity.java:
我不认为它是我的 java 代码,但仍然在这里,以防有人认为问题出在该代码中。主活动.java:
package android.stefan.testappnieuw;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
public class MainActivity extends Activity implements View.OnClickListener, AdapterView.OnItemClickListener {
TextView mainTextView;
Button mainButton;
EditText mainEditText;
ListView mainListView;
ArrayAdapter mArrayAdapter;
ArrayList mNameList = new ArrayList();
android.widget.ShareActionProvider mShareActionProvider;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1. Access the TextView defined in layout XML
// and then set its text
mainTextView = (TextView) findViewById(R.id.main_textview);
mainTextView.setText("Set in Java!");
// 2. Access the Button defined in layout XML
// and listen for it here
mainButton = (Button) findViewById(R.id.main_button);
mainButton.setOnClickListener(this);
// 3. Access the EditText defined in layout XML
mainEditText = (EditText) findViewById(R.id.main_edittext);
// 4. Access the ListView
mainListView = (ListView) findViewById(R.id.main_listview);
// 5. Set this activity to react to list items being pressed
mainListView.setOnItemClickListener(this);
// Create an ArrayAdapter for the ListView
mArrayAdapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1,
mNameList);
// Set the ListView to use the ArrayAdapter
mainListView.setAdapter(mArrayAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu.
// Adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
// Access the Share Item defined in menu XML
MenuItem shareItem = menu.findItem(R.id.menu_item_share);
// Access the object responsible for
// putting together the sharing submenu
if (shareItem != null) {
mShareActionProvider = (android.widget.ShareActionProvider)shareItem.getActionProvider();
}
// Create an Intent to share your content
setShareIntent();
return true;
}
private void setShareIntent() {
if (mShareActionProvider != null) {
// create an Intent with the contents of the TextView
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Android Development");
shareIntent.putExtra(Intent.EXTRA_TEXT, mainTextView.getText());
// Make sure the provider knows
// it should work with that Intent
mShareActionProvider.setShareIntent(shareIntent);
}
}
@Override
public void onClick(View v) {
// Take what was typed into the EditText
// and use in TextView
mainTextView.setText(mainEditText.getText().toString()
+ " Hallo");
// Also add that value to the list shown in the ListView
mNameList.add(mainEditText.getText().toString());
mArrayAdapter.notifyDataSetChanged();
// 6. The text you'd like to share has changed,
// and you need to update
setShareIntent();
}
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
// Log the item's position and contents
// to the console in Debug
Log.d("omg android", position + ": " + mNameList.get(position));
}
}
I really have no idea whats wrong I'm new to java/android and for some reason the menu bar is showing up in the tutorial but not for me.
我真的不知道出了什么问题,我是 java/android 新手,出于某种原因,菜单栏出现在教程中,但不适合我。
Thanks for reading/helping!
感谢阅读/帮助!
回答by Jorge Perez Aguero
go to your manifest file and add or change this application attribute, if not available look for something similar there are more using action bar
转到您的清单文件并添加或更改此应用程序属性,如果不可用,请查找类似的内容,还有更多使用操作栏
android:theme="@style/ThemeOverlay.AppCompat.ActionBar" >
回答by Arun Shankar
<item
android:id="@+id/menu_item_share"
android:showAsAction="always"
android:title="Share"
android:actionProviderClass= "android.widget.ShareActionProvider"
tools:ignore="AppCompatResource" />
ifRoom means if there is room available to show. Make it always for it to be shown always.
ifRoom 表示是否有房间可以展示。让它始终显示它。
回答by AmDroid
select_patient xml containing menu as below:-
<item android:id="@+id/action_aboutus" android:orderInCategory="100" android:title="@string/action_about_us" android:icon="@drawable/help_icon" app:showAsAction="always" />
Extends "ActionBarActivity" in your activity.
Make sure you have added the below lines of code also in your activity
@Override public boolean onCreateOptionsMenu(Menu menu) { SharedMenu.onCreateOptionMenu(menu, this, R.menu.select_patient); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if (SharedMenu.onOptionsItemSelected(item, this) == false) { // handle local menu items here or leave blank } return super.onOptionsItemSelected(item); }
select_patient xml 包含如下菜单:-
<item android:id="@+id/action_aboutus" android:orderInCategory="100" android:title="@string/action_about_us" android:icon="@drawable/help_icon" app:showAsAction="always" />
在您的活动中扩展“ActionBarActivity”。
确保您在活动中也添加了以下代码行
@Override public boolean onCreateOptionsMenu(Menu menu) { SharedMenu.onCreateOptionMenu(menu, this, R.menu.select_patient); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if (SharedMenu.onOptionsItemSelected(item, this) == false) { // handle local menu items here or leave blank } return super.onOptionsItemSelected(item); }