Android活動中使用Menu和android活動的啟動方式
阿新 • • 發佈:2018-11-02
首先我們在我們的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:這種模式會新建一個返回棧。解決共享的問題。