You are on page 1of 6

CHUYÊN ĐỀ LẬP TRÌNH DI ĐỘNG

DIALOGS – TOAST NOTIFICATIONS –


EXCEPTION
I. DIALOG
 Một cửa sổ nhỏ xuất hiện trên Activity hiện tại.
 Khi dialog xuất hiện, dialog sẽ nhận tương tác của người sử dụng.
 Thường dùng để hiện cảnh báo hay cho người dùng thực hiện một tác vụ nhỏ mà
có liên quan đến tiến trình hiện tại.
 Ta có thể dùng các dialog có sẵn như AlertDialog, ProgessDialog,
DatePickerDialog, TimePickerDialog hoặc tự tạo ra dialog riêng dựa vào Dialog
Object.

1. AlertDialog
Khi tạo 1 AlertDialog ta nên xác định trước:

 Có tiêu đề (title) hay không.


 Có nội dung (text message) gì.
 Có 1, 2 hay 3 nút.
 Có danh sách chọn hay không (với tùy chọn là các checkbox hoặc radio button).

Tạo AlertDialog và gán các thuộc tính thông dụng


AlertDialog.Builder mydialog=new
AlertDialog.Builder(context);
// khai báo trước Context context = this;
mydialog.setTitle("xác nhận");
mydialog.setMessage("khỏe không?");
mydialog.setIcon(R.mipmap.ic_launcher);

Thêm nút và bắt sự kiện


mydialog.setPositiveButton("YES",new OnClickListener() {

public void onClick(DialogInterface dialog, int which)


{
// TODO Auto-generated method stub
DialogdemoActivity.this.finish(); //dong activity
dialog.cancel(); //dong dialog
}
});
CHUYÊN ĐỀ LẬP TRÌNH DI ĐỘNG

Có các nút: setPositiveButton, setNegativeButton, setNeutralButton

Hiển thị AlertDialog


AlertDialog alerthoitham=mydialog.create();
alerthoitham.show();

2. AlertDialog kiểu List


final CharSequence[] muc={"Đỏ","Vàng","Cam"};

mydialog.setItems(muc, new OnClickListener() {

public void onClick(DialogInterface dialog, int which) {


// TODO Auto-generated method stub

}
});

AlertDialog kiểu List với radiobutton

mydialog.setSingleChoiceItems(muc,-1,new OnClickListener() {

public void onClick(DialogInterface dialog, int which) {


// TODO Auto-generated method stub

}
CHUYÊN ĐỀ LẬP TRÌNH DI ĐỘNG

});

AlertDialog kiểu List với checkbox

final CharSequence[] muc={"Đỏ","Vàng","Cam"};


boolean[] mang_check={true,false,true};

mydialog.setMultiChoiceItems(muc, mang_check,new
OnMultiChoiceClickListener() {

public void onClick(DialogInterface dialog, int which, boolean


isChecked) {
// TODO Auto-generated method stub
}
});

Progress Dialog

ProgressDialog mypregress= ProgressDialog.show(this,"Cho chut","plese


wait");
Dùng nó chung với Thread hoặc trước các thao tác cần xử lý lâu. Gọi dimiss() để tắt
nó.

3. Toast Notifications
 Một thông báo được hiện ra trên bề mặt của cửa sổ.
 Chỉ chiếm 1 vùng không gian nhỏ vừa bằng với thông báo và nó không ảnh hưởng
gì đến tương tác của người sử dụng trên Activity.
CHUYÊN ĐỀ LẬP TRÌNH DI ĐỘNG

 Tự động rõ dần rồi mờ dần (fade in, fade out) và không nhận bất kì sự kiện tương
tác nào.

Toast.makeText(this.getApplicationContext(),
"Bạn vừa chọn OK",Toast.LENGTH_LONG).show();

II. Ngoại lệ (Exception) là gì?


Lỗi pháp sinh không phải khi lập trình mà khi sử dụng. Lỗi do môi trường
không phù hợp hoặc do dữ liệu do người sử dụng đưa vào sai.

Ví dụ: chương trình nhập vào 2 số, xuất ra thương của 2 số đó. Khi người
sử dụng nhập lại nhập dữ liệu “ABC” và “DEF” thế là lỗi xảy ra.

Try - catch – finally


Cú pháp:

try
{
//
//
// CÁC THAO TÁC CỦA GIẢI THUẬT
//
}
catch(Exception e1)
{
//cac lenh khi xay ra exception
}
catch(Exception e2)
{
//cac lenh khi xay ra exception
}
catch(Exception e3)
{
//cac lenh khi xay ra exception
}
finally
{
CHUYÊN ĐỀ LẬP TRÌNH DI ĐỘNG

//Các lệnh luôn luôn được thực hiện


}

Hiểu đơn giản: cố gắng làm trong khối try, làm được thì thôi, làm không được thì
nhảy qua khối catch để làm. Khối filnally là tùy chọn, luôn luôn được làm.

Mỗi khối catch bắt cho 1 loại ngoại lệ khác nhau. Nếu không biết lỗi thuộc loại
nào thì dùng loại “Exception”, loại này sẽ bắt tất cả các ngoại lệ.
Một số loại ngoại lệ
Ngoại lệ Tác dụng

Exception Bắt được tất cả các loại ngoại lệ

ArithmeticException Bắt các loại ngoại lệ về toán học,


(chia cho 0)

ArrayIndexOutOfBoundsException Bắt ngoại lệ khi mảng bị tràn

NumberFormatException Bắt ngoại lệ về ép kiểu chuỗi sang số


Integer.Parseint(“dgd2”)

IOException Bắt ngoại lệ về nhập xuất file

Bài tập thực hành


Bài 1: Viết chương trình demo sử dụng Dialog.

Yêu cầu:

Chương trình có 3 button:


CHUYÊN ĐỀ LẬP TRÌNH DI ĐỘNG

 Nút 1: Click vào mở ra một Dialog có 1 nút OK.


 Nút 2: Click vào mở ra một Dialog có 2 nút Yes, No.
 Nút 3: Click vào mở ra một Dialog có 3 nút Yes, No, Cancel.

Bài 2: Viết chương trình demo việc cảnh báo khi thoát chương trình.

Yêu cầu:

Chương trình có 1 nút “Exit”. Khi click “Exit”


hiện ra 1 Dialog có 2 nút “OK” và “Cancel”.

 Click nút “OK”: sẽ thoát khỏi chương


trình.
 Click nút “Cancel”: Đóng dialog lại và
hiển thị một Toast với câu thông báo
“Cám ơn chưa đóng tôi”.

Bài 3: Viết chương trình cho phép nhập vào 2 số và xuất ra thương, dùng Exception để
bắt lỗi, dùng dialog để thông báo.

Yêu cầu:

Thông báo bằng Dialog khi có các Exception:

 a và b phải là số (NumberFormatException, Integer.ParseInt)


 không chia được cho 0 (ArithmeticException)
Bài 4: Viết chương trình tạo ra N số nguyên ngẫu nhiên, cho phép nhập vào 1 số k, xuất
ra giá trị phần tử thứ k trong N số nguyên.

Yêu cầu:

Dùng Exception để bắt trường hợp truy xuất ngoài mảng sẽ xuất câu thông báo
“không thể truy xuất phần tử ngoài mảng bằng Toast.
(ArrayIndexOutOfBoundsException)

You might also like