android应用开发揭秘examples_04-13笔记(Menu的2种实现方式)

两种方式实现OptionMenu即按下手机上的Menu键的显示功能。
1.  在menu.xml 中 静态定义, 之后以MenuInflater.inflate 方式调用
2.  动态使用menu.add()调用;
//menu.add()里面有四个参数依次是:
     //第一个,组别。
     //第二个,ID。是menu识别编号,供识别menu用的。很重要。
     //第三个,顺序。这个参数的大小决定菜单出现的先后顺序。顺序是参数由小到大,菜单从左到右,从上到下排列。一行最多三个。
     //第四个,显示文本。
以上两种方式共同点是都在onCreateOptionsMenu(){ } 实现调用代码

-----------------------------------------------------------------------

子目录res/menu/menu.xml中
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/about"
          android:title="关于" />
    <item android:id="@+id/exit"
          android:title="退出" />
</menu>
然后设计2个 Activity 分别用来静态和动态实现菜单
---------------------------------------------------------------------
//Activity01.java
package com.yarin.android.Examples_04_13;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

public class Activity01 extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    /*创建menu*/
    public boolean onCreateOptionsMenu(Menu menu)
    {
         MenuInflater inflater = getMenuInflater();
        //设置menu界面为res/menu/menu.xml
        inflater.inflate(R.menu.menu, menu);
        return true;

    }

    /*处理菜单事件*/
    public boolean onOptionsItemSelected(MenuItem item)
    {
        //得到当前选中的MenuItem的ID,
        int item_id = item.getItemId();

        switch (item_id)
        {
            case R.id.about:
                /* 新建一个Intent对象 */
                Intent intent = new Intent();
                /* 指定intent要启动的类 */
                intent.setClass(Activity01.this, Activity02.class);
                /* 启动一个新的Activity */
                startActivity(intent);
                /* 关闭当前的Activity */
                Activity01.this.finish();
                break;
            case R.id.exit:
                Activity01.this.finish();
                break;
        }
        return true;
    }

}

---------------------------------------------------------------------
//Activity02.java
package com.yarin.android.Examples_04_13;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class Activity02 extends Activity
{
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        /* 设置显示main2.xml布局 */
        setContentView(R.layout.main2);
    }

    /*创建menu*/
    public boolean onCreateOptionsMenu(Menu menu)
    {
        //为menu添加内容
        menu.add(0, 0, 0, R.string.ok);
        menu.add(0, 1, 1, R.string.back);

        return true;
    }

    /*处理menu的事件*/
    public boolean onOptionsItemSelected(MenuItem item)
    {
        //得到当前选中的MenuItem的ID,
        int item_id = item.getItemId();

        switch (item_id)
        {
            case 0:
                DisplayToast("OK");
                break;
            case 1:
                /* 新建一个Intent对象 */
                Intent intent = new Intent();
                /* 指定intent要启动的类 */
                intent.setClass(Activity02.this, Activity01.class);
                /* 启动一个新的Activity */
                startActivity(intent);
                /* 关闭当前的Activity */
                Activity02.this.finish();
                break;
        }
        return true;
    }


    /* 显示Toast  */
    public void DisplayToast(String str)
    {
        Toast toast = Toast.makeText(this, str, Toast.LENGTH_LONG);
        //设置toast显示的位置
        toast.setGravity(Gravity.TOP, 0, 220);
        //显示该Toast
        toast.show();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值