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); } } }
Ứ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
Cập nhật công nghệ từ Youtube tại link: https://www.youtube.com/channel/UCOxeYcvZPGf-mGLYSl_1LuA/videos
Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
Mọi hỗ trợ về công nghệ email: dinhanhtuan68@gmail.com