Android活动中使用Menu和android活动的启动方式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sunshunli/article/details/83350709

首先我们在我们的res文件下新建一个Directory,然后在建立一个Menu source file.

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/add_item"
    android:title="Add"/>
    <item
        android:id="@+id/remove_item"
        android:title="Remove"/>
</menu>

这里我们创建两个菜单项,里面的<item>标签就是用来创建具体的某一个菜单项,然后通过android:id来指定唯一的标识符,通过android:title给这个菜单项指定一个名称。

package com.example.sunshunli.menutest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }
    //当用户点击Menu按钮的时候会调用这个方法。
    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.main,menu);
        return true;
    }
    //当用户点击Menu的选项的时候会调用这个方法
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.add_item:
                Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();
                break;
            case R.id.remove_item:
                Toast.makeText(this, "You clicked remove", Toast.LENGTH_SHORT).show();
                break;
            default:
        }
        return true;
    }
}

我们重写onCreateOptionsMenu()方法,在AS中可以使用快捷键来快速实现重写,Ctrl+o.

通过getMenuInflater()方法能够收到MenuInflater对象,在调用它的inflate()方法就给当前的活动创建了菜单。

inflate接受两个参数,第一个参数用于指定我们通过那一个资源文件来创建菜单,第二个参数用于指定我们的菜单项将添加到哪一个Menu对象当中,这里直接使用onCreateOptionsMenu()方法传入的一个参数。然后返回的是Ture,表示允许创建的菜单显示出来。否则不显示。

android中的活动有五种启动的方式,standard,singleTop,singleTask,singleInstance,

standard:是活动的默认启动方式。对于standard模式,系统不会关心这个活动是否已经存在返回栈,每次启动都会为该活动建立一个新的实例。

singleTop:在启动活动时如果发现返回栈的栈顶已经是该活动,那么可以直接使用它,不会在创建新的活动实例。

singleTask:如果不是栈顶元素,那么还是会建立新的实例,所以使用singleTask会解决这一个问题。

singleInstance:这种模式会新建一个返回栈。解决共享的问题。

猜你喜欢

转载自blog.csdn.net/sunshunli/article/details/83350709
今日推荐