Bài 22 : Menu Trong Android(P3)

Leave a Comment
- Bạn mở MainActivity.java lên:
22_menu_13

Dòng lệnh 13, 14: getMenuInflater().inflate(R.menu.mymenu, menu); dùng để gắn Menu XML Resource vào ứng dụng, bạn chạy máy ảo lên và nhấn vào nút Menu, bạn sẽ thấy được kết quả:
22_menu_14+ Bây giờ ta viết Coding để xử lý sự kiện cho các Menu Item:
- Để viết sự kiện cho các Menu Item bạn cần Override phương thức onOptionsItemSelected, Trong phương thức này ta dựa và Id của các Menu Item để xử lý:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package tranduythanh.com;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
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) {
 getMenuInflater()
 .inflate(R.menu.mymenu, menu);
 return true;
 }
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
 switch(item.getItemId())
 {
 case R.id.item_xemdssv:
 //Xử lý xem danh sách sinh viên
 break;
 case R.id.item_lopdhth1a:
 //xử lý xem thông tin lớp DHTH1A
 break;
 case R.id.item_lopdhth1b:
 break;
 case R.id.item_lopdhth1c:
 break;
 }
 return super.onOptionsItemSelected(item);
 }
}
- Bạn nhìn vào dòng lệnh 19 trở xuống, Ở đây Tôi dùng switch case để xử lý theo đúng Id mà người sử dụng chọn lựa. Tùy vào yêu cầu của bài toán mà chúng ta xử lý trong này. Tôi khuyên bạn nên viết từng hàm riêng theo nghiệp vụ rồi cứ thế mà gọi hàm theo đúng Menu Item.
- Bạn tải code mẫu ở đây: http://www.mediafire.com/?zawcff1ha6ap3ic
b) Tạo Menu bằng Coding (Runtime):
- Chúng ta có thể tạo Menu lúc Runtime (không cần dùng XML Resource):
1
2
3
4
5
6
7
8
9
public boolean onCreateOptionsMenu(Menu menu) {
 menu.add("Menu 1");
 menu.add("Menu 2");
 SubMenu sub3= menu.addSubMenu("Menu 3");
 sub3.add("File 1 Menu 3");
 sub3.add("File 2 Menu 3");
 sub3.add("File 3 Menu 3");
 return true;
 }
- Bạn nhìn thấy đấy, việc tạo Menu lúc Runtime rất dễ dàng. Nhưng nếu như bạn viết code tạo Menu như vậy thì việc xử lý gặp chút khó khăn vì bạn không biết Id của mỗi Menu Item.
- Do đó bạn nên viết lại theo cách sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package tranduythanh.com;
 
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
 
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) {
 //Đối số 1 là nhóm
 //Đối số 2 là Id cho Menu Item
 //Đối số 3 là thứ tự xuất hiện của Menu Item
 //Đối số 4 là tiêu đề cho Menu Item
 int itemId=113;
 menu.add(0, itemId, 0, "Menu 1");
 itemId=114;
 menu.add(0,itemId,1,"Menu 2");
 SubMenu sub3= menu.addSubMenu("Menu 3");
 itemId=115;
 sub3.add(0,itemId,0,"File 1 Menu 3");
 itemId=116;
 sub3.add(0,itemId,1,"File 2 Menu 3");
 itemId=117;
 sub3.add(0,itemId,2,"File 3 Menu 3");
 return true;
 }
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
 switch(item.getItemId())
 {
 case 113:
 //Xử lý Menu 1
 break;
 case 114:
 //Xử lý Menu 2
 break;
 case 115:
 //Xử lý File 1 của Menu 3
 break;
 case 116:
 //Xử lý File 2 của Menu 3
 break;
 case 117:
 //Xử lý File 3 của Menu 3
 break;
 }
 return super.onOptionsItemSelected(item);
 }
}
- Như vậy mỗi lần tạo Menu Item bạn nên gán Id cho nó và xử lý theo Id này ở trong hàm onOptionsItemSelected.
- Bạn tải code mẫu ở đây: http://www.mediafire.com/?em82rb51dduvnou
- Chúc các bạn thành công.

0 nhận xét:

Đăng nhận xét