Lập trình Android – OptionMenu

Lập trình Android

– OptionMenu

Bài trước

Bài sau

OptionMenu trong Android

Một ứng dụng có thể mở ra 1 menu để hiển thị các hành động thông qua 1 popup. Các menu chọn lựa chỉ tồn tại nếu thiết bị có hỗ trợ phím “option”. Nhưng mặc dù có sẵn phím này, Android 4.0 trở lên khuyến khích người lập trình sử dụng ActionBar thay cho menu.

Các phương thức thường dùng trong OptionMenu

1.onCreateOptionsMenu(): Phương thức onCreateOptionsMenu() sẽ thực hiện các công việc khởi tạo menu cho đối tượng Activity, ở đây chúng ta dùng phương thức inflate() của lớp android.view.MenuInflater để lấy dữ liệu của menu từ file options_menu.xml về sử dụng. Phương thức này nhận vào một đối tượng android.view.Menu.

2. onOptionsItemSelected(): Phương thức onOptionsItemSelected() sẽ xử lý sự kiện click menu. Phương thức này nhận vào một đối tượng android.view.MenuItem.

Ví dụ: Trong ví dụ này chúng ta sẽ làm ứng dụng gồm có 1 TextView. Trong ứng dụng khi bạn chọn thanh menu hoặc bấm phím ctrl+m trên máy ảo sẽ xuất hiện một optionmenu chọn một mục trên optionmenu sẽ xuất hiện nhãn của của optionmenu thông qua Toast. Tiến hành tạo project, vào thư mục  res /layout -> activity_main.xml  thiết kế giao diện sau:

Bước 1: Tạo một project tên là OptionMenuFile->New->Android Application Project điền các thông tin ->Next ->Finish
Bước 2: Mở res -> layout -> xml (hoặc) activity_main.xml và thêm code.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="hiepsiit.com.menuoption.MainActivity" >

   <TextView
        android:id="@+id/tv_context_menu"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="Demo Menu Chọn lựa"
        android:textColor="#ff00"
        android:textSize="25sp" />
</RelativeLayout>

Bước 3: Trong tập tin strings.xml chúng ta định nghĩa 2 biến String dùng làm tiêu đề cho từng menu item.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">MainActivity</string>    
    <string name="menu1">Settings</string>
    <string name="menu2">Tools</string>
</resources>

Bước 4: Trong thư mục res/menu tạo môt tập tin options_menu.xml. Bên trong file này chúng ta sử dụng thẻ menu để khai báo menu và thẻ item để khai báo các item trong menu đó.

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

Bước 5: Mở src -> package -> MainActivity.java
Trong bước này để có thể sử dụng menu tùy chọn thì chúng ta phải override lại 2 phương thức của lớp Activity là onCreateOptionsMenu() và onOptionsItemSelected().

package hiepsiit.com.menuoption;

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

public class MainActivity extends Activity {

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

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.option_menu, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		switch (item.getItemId()) 
        {
            case R.id.settings:
                Toast.makeText(MainActivity.this, "Settings", 
                    Toast.LENGTH_SHORT).show();
                return true;
 
            case R.id.tools:
                Toast.makeText(MainActivity.this, "Tools", 
                    Toast.LENGTH_SHORT).show();
                return true;
 
            default:
                return super.onOptionsItemSelected(item);
        }
	}
}

Download ví dụ

Ứng dụng này được phát triển bởi adt bundleandroid 4.2 sử dụng minimum sdk 8 and target sdk 21.

Kết quả khi chạy ứng dụng:

Sau đó click vào thanh menu hoặc CTRL+M

Chọn một mục trên menu chọn lựa

 

 

Bài trước

Bài sau