Android, Как создать меню
здесь я попытался сделать меню, но меню не отображается на экране, поэтому, пожалуйста, руководство мне, где я делаю ошибку...
MenuTest.java
public class MenuTest extends Activity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.more_tab_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId())
{
case R.id.feeds:
break;
case R.id.friends:
break;
case R.id.about:
break;
}
return true;
}
}
и мой XML-файл является more_tab_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/feeds"
android:title="Feeds"/>
<item
android:id="@+id/friends"
android:title="Friends"/>
<item
android:id="@+id/about"
android:title="About"/>
</menu>
пожалуйста, руководство мне,
10 ответов:
public class MenuTest extends Activity { @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.more_tab_menu, menu); // return true so that the menu pop up is opened return true; } }
и не забудьте нажать кнопку меню или значок на эмуляторе или устройстве
пожалуйста, смотрите :==
private int group1Id = 1; int homeId = Menu.FIRST; int profileId = Menu.FIRST +1; int searchId = Menu.FIRST +2; int dealsId = Menu.FIRST +3; int helpId = Menu.FIRST +4; int contactusId = Menu.FIRST +5; @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(group1Id, homeId, homeId, "").setIcon(R.drawable.home_menu); menu.add(group1Id, profileId, profileId, "").setIcon(R.drawable.profile_menu); menu.add(group1Id, searchId, searchId, "").setIcon(R.drawable.search_menu); menu.add(group1Id, dealsId, dealsId, "").setIcon(R.drawable.deals_menu); menu.add(group1Id, helpId, helpId, "").setIcon(R.drawable.help_menu); menu.add(group1Id, contactusId, contactusId, "").setIcon(R.drawable.contactus_menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 1: // write your code here Toast msg = Toast.makeText(MainHomeScreen.this, "Menu 1", Toast.LENGTH_LONG); msg.show(); return true; case 2: // write your code here return true; case 3: // write your code here return true; case 4: // write your code here return true; case 5: // write your code here return true; case 6: // write your code here return true; default: return super.onOptionsItemSelected(item); } }
изменить
onCreateOptionsMenu
метод, чтобы возвратитьtrue
. Цитировать документы:вы должны вернуть true для отображения меню; если вы вернете false он не будет отображаться.
@Override public boolean onCreateOptionsMenu(Menu menu) { new MenuInflater(this).inflate(R.menu.folderview_options, menu); return (super.onCreateOptionsMenu(menu)); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.locationListRefreshLocations) { Cursor temp = helper.getEmployee(active_employeeId); String[] matches = new String[1]; if (temp.moveToFirst()) { matches[0] = helper.getEmployerID(temp); } temp.close(); startRosterReceiveBackgroundTask(matches); } else if (item.getItemId()==R.id.locationListPrefs) { startActivity(new Intent(this, PreferencesUnlockScreen.class)); return true; } return super.onOptionsItemSelected(item); }
заменить возвращение супер.onCreateOptionsMenu(меню); С возвращает true; в своем onCreateOptionsMenu способ Это поможет
и вы также должны иметь onCreate метод в деятельности
import android.app.Activity; import android.os.Bundle; import android.view.*; import android.widget.*; public class AndroidWalkthroughApp2 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // show menu when menu button is pressed MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.options_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // display a message when a button was pressed String message = ""; if (item.getItemId() == R.id.option1) { message = "You selected option 1!"; } else if (item.getItemId() == R.id.option2) { message = "You selected option 2!"; } else { message = "Why would you select that!?"; } // show message via toast Toast toast = Toast.makeText(this, message, Toast.LENGTH_LONG); toast.show(); return true; } }
предыдущие ответы охватили традиционное меню, используемое в android. Их еще один вариант, который вы можете использовать, если вы ищете альтернативу
https://github.com/AnshulBansal/Android-Pulley-Menu
меню шкива является альтернативой традиционному меню, которое позволяет пользователю выбрать любой вариант для деятельности интуитивно. Меню отображается путем перетаскивания экрана вниз, и в этом жесте пользователь также может выбрать любой из опции.
Программирование пользовательского интерфейса Android немного сложнее. Чтобы включить меню опций, в дополнение к написанному вами коду, нам также нужно вызвать setHasOptionsMenu(true) в вашем переопределенном методе OnCreate(). Надеюсь, это поможет вам.