1. 程式人生 > >Android活動中使用Menu和android活動的啟動方式

Android活動中使用Menu和android活動的啟動方式

首先我們在我們的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:這種模式會新建一個返回棧。解決共享的問題。