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à OptionMenu: File->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 bundle, android 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