3.2 Toast Notification và Dialog

3.2.1 Toast Notification

            Toast là một loại thông báo (message) ngắn. Hiển thị trong một khoảng thời gian nhất định và tự động mất dần.

Nó giúp người lập trình gỡ rối (debugging) cho chương trình khi cần thiết .Trong lúc hiển thị, không ảnh hưởng đến activity khác và không bắt các sự kiện của người dùng.

a). Tạo Giao diện trong tập tin XML

Mở tập tin res/layout/activity_main.xml và thêm đoạn mã sau:

Code:

<LinearLayout xmlns:Android=”http://schemas.Android.com/apk/res/Android”

Android:id=”@+id/LinearLayout1″

Android:layout_width=”fill_parent”

Android:layout_height=”fill_parent”

Android:orientation=”vertical”

Android:layout_gravity=”center”

Android:gravity=”center”>

 

<Button

Android:id=”@+id/button1″

Android:layout_width=”wrap_content”

Android:layout_height=”wrap_content”

Android:text=”Toast ”

Android:gravity=”center”

/>

</LinearLayout>

  1. b) Viết code cho chương trình

Thêm sự kiện OnClickListener cho Button “Hiển thị [Normal Toast]”. Khi người dùng click vào Button, một thông báo xuất hiện.

Mở tập tin AndroidNormalToastMainActivity.java và thêm đoạn mã sau:

Code:

package apps1pro.com;

import Android.support.v7.app.ActionBarActivity;

import Android.app.Activity;

import Android.os.Bundle;

import Android.view.Menu;

import Android.view.MenuItem;

import Android.view.View;

import Android.view.View.OnClickListener;

import Android.widget.Button;

import Android.widget.Toast;

public class MainActivity extends Activity {

Button button;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

button = (Button) findViewById(R.id.button1);

button.setOnClickListener(new OnClickListener() {

public void onClick(View arg0) {

Toast.makeText(getApplicationContext(), “Bạn vừa Click vào button Toast!!!”,

Toast.LENGTH_LONG).show();

}

});

}

}

Ví dụ : Dùng tablelayout tạo các button số từ 1 đến 9 khi click vào button sẽ hiện lên thông báo các số vừa chọn

Mở tập tin res/layout/activity_main.xml và ta làm như sau:

Code trong Mainactivity.java

public class MainActivity extends Activity implements OnClickListener {

Button so1,so2,so3,so4,so5,so6,so7,so8,so9;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

so1=(Button) findViewById(R.id.btn1);

so2=(Button) findViewById(R.id.btn2);

so3=(Button) findViewById(R.id.btn3);

so4=(Button) findViewById(R.id.btn4);

so5=(Button) findViewById(R.id.btn5);

so6=(Button) findViewById(R.id.btn6);

so7=(Button) findViewById(R.id.btn7);

so8=(Button) findViewById(R.id.btn8);

so9=(Button) findViewById(R.id.btn9);

so1.setOnClickListener(this);

so2.setOnClickListener(this);

so3.setOnClickListener(this);

so4.setOnClickListener(this);

so5.setOnClickListener(this);

so6.setOnClickListener(this);

so7.setOnClickListener(this);

so8.setOnClickListener(this);

so9.setOnClickListener(this);

}

void toast(String i)

{

Toast.makeText(getApplicationContext(), “ban vua click so “+i+” “, Toast.LENGTH_LONG).show();

 

}

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

switch (arg0.getId()){

case R.id.btn1:

toast(“1”);

break;

case R.id.btn2:

toast(“2”);

break;

case R.id.btn3:

toast(“3”);

break;

case R.id.btn4:

toast(“4”);

break;

case R.id.btn5:

toast(“5”);

break;

case R.id.btn6:

toast(“6”);

break;

case R.id.btn7:

toast(“7”);

break;

case R.id.btn8:

toast(“8”);

break;

case R.id.btn9:

toast(“9”);

break;

}

 

}

 

}

3.2.2 Dialog

Một hộp thoại thường là một màn hình nhỏ mà xuất hiện đè lên các Activity hiện tại. Activity nằm dưới sẽ không tương tác được với người dùng mà thay vào đó là hộp thoại sẽ đóng vai trò đó. Hộp thoại thông thường dùng để thông báo hay đại loại vậy. Thông thường có các loại hộp thoại sau:

Tên dialog Miêu tả
AlertDialoglà dạng hộp thoại có nhiều nhất 3 nút nhấn hoặc có thêm danh sách các mục lựa chọn có thêm checkbox hay radio button. AlertDialog thích hợp   làm hộp thoại   trong các chương   trình Android và   được khuyến khích dùng.
ProgressDialoglà hộp thoại có   vòng xoay hay   thanh thể hiện   tiến trình đang chạy. Bởi vì nó là dạng AlertDialog mở rộng cho nên nó cũng có nút nhấn.
DatePickerDialoglà hộp thoại cho phép người dùng chọn ngày.
TimePickerDialoglà hộp thoại cho phép người dùng chọn giờ.

Trong hoàn cảnh, muốn thiết kế lại các hộp thoại thì có thể viết lại lớpDialog hay định nghĩa lại giao diện cho các lớp hộp thoại trên.

3.2.2.1 Tạo AlertDialog

Giao diện hiển thị của nó gồm nhiều thành phần như sau:

  • Tiêu đề.
  • Thông điệp thông báo.
  • Danh sách chứa các CheckBox hay Radio Button

hinh3.7

Hình 3.7

 

File activity_main:

<LinearLayout xmlns:Android=”http://schemas.Android.com/apk/res/Android”

Android:id=”@+id/LinearLayout1″

Android:layout_width=”fill_parent”

Android:layout_height=”fill_parent”

Android:orientation=”vertical”

Android:layout_gravity=”center”

Android:gravity=”center”>

<Button

Android:id=”@+id/button1″

Android:layout_width=”wrap_content”

Android:layout_height=”wrap_content”

Android:text=”Dialog ”

Android:gravity=”center”

/>

</LinearLayout>

File MainActivity :

public class MainActivity extends Activity {

final Context context = this;

Button button;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

button = (Button) findViewById(R.id.button1);

button.setOnClickListener(new View.OnClickListener() {

public void onClick(View arg0) {

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context );

// gán tiêu đề cho dialog

alertDialogBuilder.setTitle(“Lập trình Android Studio với apps1pro”);

// hiển thị Thông điệp (thông báo) lên dialog

alertDialogBuilder .setMessage(“Bạn có muốn thoát không ?”)

.setCancelable(false)

.setPositiveButton(“Có”,new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,int id) {

MainActivity.this.finish();

}

})

.setNegativeButton(“Không”,new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,int id) {

dialog.cancel();

}

});

// Tạo alert dialog

AlertDialog alertDialog = alertDialogBuilder.create();

// Hiển thị dialog

alertDialog.show();

}

});

}

Để khởi tạo AlertDialog, ta phải sử dụng lớp con là  AlertDialog.Builder:

 AlertDialog.Builder build = new AlertDialog.Builder(context)

Sau khi build xong, thì gọi create để tạo object của AlertDialog từ builder đó:

AlertDialog ad = build.create()

 

Mục đíchPhương thức/Đối tượng
Tạo đốitượng để xây dựng AlertDialogAlertDialog.Builder builder = new AlertDialog.Builder(this);
Thiết lập tiêu đềsetTitle(CharSequence title) hoặc setTitle(int titleId)
Thiết lập thông điệpsetMessage(CharSequence message) hoặc setMessage(int

messageId)

Thiết lập iconsetIcon(Drawable icon) hoặc setIcon(int iconId)
Thiết lập danh sáchsetItems(CharSequence[] items,

DialogInterface.OnClickListener listener) hoặc setItem(int

itemsId, DialogInterface.OnClickListener listener)

Thiết lập danh sách chứa Radio ButtonssetSingleChoiceItems(CharSequence[] items, int

checkedItem, DialogInterface.OnClickListener listener) hoặc

setSingleChoiceItems(int itemsId, int checkedItem,DialogInterface.OnClickListener listener)

Thiết lập danh sách chứa CheckBoxsetMultiChoiceItems(CharSequence[] items, boolean[]

checkedItems, DialogInterface.OnClickListener listener) hoặc

setMultiChoiceItems(int itemsId, boolean checkedItems,DialogInterface.OnClickListener listener)

Thiết lập Positive ButtonsetPositiveButton(CharSequence text,

DialogInterface.OnClickListener listener) hoặc

setPositiveButton(int textId, DialogInterface.OnClickListenerlistener)

 

Thiết lập Negative Button

 

setNegativeButton(CharSequence text,

DialogInterface.OnClickListener listener) hoặc

setNegativeButton (int textId,DialogInterface.OnClickListener listener)

Thiết lập Neutral ButtonsetNeutralButton(CharSequence text,

DialogInterface.OnClickListener listener) hoặc

setNeutralButton (int textId, DialogInterface.OnClickListenerlistener)

 

3.2.2.2 PROGRESSDIALOG

ProgressDialog là loại Dialog dùng để hiển thị tiến độ thực hiện một công việc nào đó . Dạng Dialog này được tạo ra từ lớp cha là AlertDialog. Ngoài những tính chất riêng, nó cũng kế thừa nhiều thuộc tính từ lớp cha AlertDialog như : Tiêu đề, Thông điệp, Buttons.

hinh3.8

Hình 3.8

Code :

public class MainActivity extends Activity {

final Context context = this;

Button button;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

button = (Button) findViewById(R.id.button1);

// add button listener

button.setOnClickListener(new OnClickListener() {

public void onClick(View arg0) {

ProgressDialog pd =

new ProgressDialog(MainActivity.this);

pd.setTitle(“Vui Lòng chờ……”);

pd.setMessage(“loading “);

pd.show();

}

});

}

}

3.2.2.3 DATEPICKERDIALOG

DatePickerDialog dùng để chọn ngày tháng.

hinh3.9

Hình 3.9

Phương thức khởi tạo DatePickerDialog như sau:

DatePickerDialog(Contextcontext,DatePickerDialog.OnDateSetListenercallback , intyear,intmonthOfYear, intdayOfMonth)

Trong đó:

  • context: là ngữ cảnh hiển thị Dialog. Trong trườnghợp này là Activity hiện hành.
  • callback: dùng để thiết lập sự kiện khi người dùngthay đổi ngày trên Dialog.
  • year: thiết lập năm trên Dialog.
  • monthOfYear: thiết lập tháng trên Dialog.
  • dayOfMonth: thiết lập ngày trên Dialog.

3.2.2.4 TIMEPICKERDIALOG

TimePickerDialog dùng để chọn giờ

hinh3.10Hình 3.10

Phương thức khởi tạo DatePickerDialog như sau:

TimePickerDialog(Contextcontext,DatePickerDialog.OnDateSetListenercallback , inthourOfDay,intminute, booleanis24HourView)
Trong đó:

  • context: là ngữ cảnh hiển thị Dialog. Trong trường hợp nàylà Activity hiện hành.
  • callback: dùng để thiết lập sự kiện khi người dùng thay đổigiờ phút trên Dialog.
  • hourOfDay: thiết lập giờ trên Dialog.
  • minute: thiết lập phút trên Dialog.

is24HourView: chỉ định giờ hiển thị theo dạng 24h hay 12h

Chia sẻ.

Giới thiệu về Tác giả

Software Evolution

CỘNG ĐỒNG GIẢI TRÍ VIỆT
KẾT NỐI – GIAO LƯU – CHIA SẺ

Để lại một Trả lời