【问题标题】:how to create option menus in android application [duplicate]如何在android应用程序中创建选项菜单[重复]
【发布时间】:2012-03-08 12:01:48
【问题描述】:

可能重复:
Android, How to create option Menu

我已经尝试了所有的东西,但我无法创建选项菜单。你能给我完整的代码吗?我应该对清单文件进行任何更改以创建菜单吗?我应该只为菜单创建另一个类还是可以在之前创建的任何类中编写它?请帮帮我。我可以这样写吗:

package com.example.FirstProject;

import android.app.Activity;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;

//import android.widget.EditText;
//import android.widget.RadioButton;
//import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;



public class FirstProjectActivity extends Activity {
/** Called when the activity is first created. */
protected ListAdapter adapter;
Cursor cursor;
 protected String[] cities = {"Mumbai"};
 ListView lv ;
 ListView stations;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);      
}


public void myClickHandler(View view)
{
     Intent i=new Intent(this,City.class);
     startActivity(i);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return true;
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
     {
        if( R.id.icon==item.getItemId())     Toast.makeText(this, "You pressed the     icon!", Toast.LENGTH_LONG).show();

       if( R.id.icon==item.getItemId())      Toast.makeText(this, "You pressed the     text!", Toast.LENGTH_LONG).show();

       if( R.id.icon==item.getItemId())  Toast.makeText(this, "You pressed the      icon and text!", Toast.LENGTH_LONG).show();

    }
    return true;
}



}

【问题讨论】:

  • 乍一看,我看不出该代码有什么问题。你测试过吗?它有效吗?它会抛出错误吗?
  • getItemId 会返回你在 menu.xml 中写的 id

标签: android android-layout menuitem


【解决方案1】:

使用如下代码:

 @Override
        public boolean onCreateOptionsMenu(Menu menu)
        {
         menu.add("Item1");
         menu.add("Item2");
         return true;
        }

【讨论】:

    【解决方案2】:

    试试这个...

    public boolean onOptionsItemSelected(MenuItem item)
        {
            System.out.println("entered to option selected");
            switch(item.getItemId())
            {
    
            case  R.id.icon:
                System.out.println("entered to icon");
                Toast.makeText(this, "icon clicked", Toast.LENGTH_LONG).show();
                break;
    
            case R.id.text:
                Toast.makeText(this, "text clicked", Toast.LENGTH_LONG).show();
                break;
            case R.id.iconandtext:
                Toast.makeText(this, "icon and text clicked", Toast.LENGTH_LONG).show();
                break;
    
            }
            return true;
    
        }
    

    参考这个链接.. 也很有用enter link description here

    【讨论】:

      【解决方案3】:

      您可以在 menu.xml 中使用以下代码

      <?xml version="1.0" encoding="utf-8"?>
      <menu
        xmlns:android="http://schemas.android.com/apk/res/android">
        <item
        android:id="@+id/menu1"
        android:alphabeticShortcut="s"
        android:title="menu1 title"
        />
        <item
        android:id="@+id/menu2"
        android:alphabeticShortcut="t"
        android:title="menu2 title"
        />
       </menu>
      

      现在是调用菜单和函数的两种方法,将在所选项目上调用。

      @override
      public boolean onCreateOptionsMenu (Menu menu){
          super.onCreateOptionsMenu(menu);
           //menu.add(R.menu.main_menu);
          //menu.add(Menu.NONE, 101,Menu.FIRST,this.getResources().getString(R.string.Title));
           MenuInflater mi = getMenuInflater();
           mi.inflate(R.menu.main_menu, menu);
           return true;
      }
      

      您可以使用这两种方法来调用菜单。第一个是 menu.add,第二个是扩展 menu.xml 文件 现在在 itemselectedlistner 上被以下代码使用

      public boolean onOptionsItemSelected(MenuItem item){
          switch(item.getItemId()){
          case R.id.menu1:
              //  your code here
          case R.id.menu2:
              //   your code here
          }
          return false;
      }
      

      只需在 switch-case 中传递 id 并通过选择这些菜单来做任何你想做的事情。

      【讨论】:

        猜你喜欢
        • 2013-02-19
        • 1970-01-01
        • 2011-01-27
        • 1970-01-01
        • 2011-09-12
        • 1970-01-01
        • 1970-01-01
        • 2023-02-12
        相关资源
        最近更新 更多