Tìm hiểu một số kiểu lập trình sự kiện 2 - học lập trình android cơ bản

Học lập trình android cơ bản tại ITP Việt Nam là khóa học cơ bản, chất lượng nhất tại Hà Nội, sẽ cung cấp cho bạn những nền tảng vững chắc phát triển sau này.
Hôm nay chúng ta sẽ tiếp tục tìm hiểu những kiểu lập trình sự kiện cơ bản trong lập trình ứng dụng android.
4. Listener in variable
Gần giống với Activity Is listener, nhưng khác ở chỗ thay vì implement interface cho Activity thì nó lại được lưu trữ vào một biến có kiểu Listener trong activity. Làm cách này thì ta có thể chia sẻ chung một biến sự kiện cho các control khác nhau.
Chúng ta xét ví dụ: đổi độ F sang độ C. Giao diện chương trình dưới đây:

các kiểu lập trình sự kiện-học lập trình android

Giao diện trên có 3 button, chúng ta sẽ tạo một biến sự kiện và chua sé cho 3 button này. Các bạn tham khảo Outline để thiết kế:

các kiểu lập trình sự kiện-học lập trình android

Tìm hiểu sơ qua về công thức chuyển đổi độ F sang độ C:

các kiểu lập trình sự kiện-học lập trình android

Sau đây là một đoạn code mấy trong Activity:


import android.os.Bundle; import android.app.Activity;
import android.view.View; import android.view.View.OnClickListener;
import android.widget.Button; import android.widget.EditText;
public class MainActivity extends Activity {
private Button btnFar,btnCel,btnClear;
private EditText txtFar,txtCel;
private OnClickListener myVarListener=new OnClickListener() {

@Override
public void onClick(View arg0) {
//Lấy F và C từ control ở đây
if(arg0==btnFar)
{//Bạn xử lý chuyển đổi F–>C theo công thức}
else if(arg0==btnCel)
{//Bạn xử lý chuyển đổi C–>F theo công thức}
else if(arg0==btnClear)
{ txtFar.setText(“”); txtCel.setText(“”);txtFar.requestFocus();}
}};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
btnFar = (Button)findViewById(R.id.btnFar);
btnCel = (Button)findViewById(R.id.btnCel);
btnClear = (Button)findViewById(R.id.btnClear);
txtFar = (EditText)findViewById(R.id.txtFar);
txtCel = (EditText)findViewById(R.id.txtCel);
btnFar.setOnClickListener(myVarListener);
btnCel.setOnClickListener(myVarListener);
btnClear.setOnClickListener(myVarListener);
}}



5. Explicit listener class

Với trường hợp này thì ta tách riêng 1 class đóng vai trò là class sựu kiện riêng.
Xét ví dụ: giải phương trình bậc 2, bạn xem giao diện bên dưới:

các kiểu lập trình sự kiện-học lập trình android


Tham khảo Outline dưới đây để thiết kế giao diện

các kiểu lập trình sự kiện-học lập trình android

Đối với chương trình này, khi chọn “Tiếp tục”, chương trình sẽ xóa trắng toàn bộ dữ liệu trên màn hình đồng thời focus tới ô Nhập a; k hi chọn “Giải PT”, chương trình sẽ tiến hành lấy thông số a,b,c và tiến hành giải phương trình bậc 2 và cho ra kết quả như hình trên; k hi chọn “Thoát”, chương trình sẽ được đóng lại.
Dưới đây là mẫu coding trong Activity:


import java.text.DecimalFormat; import android.os.Bundle;
import android.app.Activity; import android.view.View;
import android.view.View.OnClickListener; import android.widget.Button;
import android.widget.EditText; import android.widget.TextView;
public class MainActivity extends Activity {Button btnTieptuc,btnGiai,btnThoat; EditText edita,editb,editc; TextView txtkq;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
btnTieptuc=(Button) findViewById(R.id.btntieptuc);
btnGiai=(Button) findViewById(R.id.btngiaipt);
btnThoat=(Button) findViewById(R.id.btnthoat);
btnTieptuc.setOnClickListener(new MyEvent());
btnGiai.setOnClickListener(new MyEvent());
btnThoat.setOnClickListener(new MyEvent());
edita=(EditText) findViewById(R.id.edita);
editb=(EditText) findViewById(R.id.editb);
editc=(EditText) findViewById(R.id.editc);
txtkq=(TextView) findViewById(R.id.txtkq);
}
public void giaiPtb2()
{ String sa=edita.getText()+””; String sb=editb.getText()+””;
String sc=editc.getText()+””;int a=Integer.parseInt(sa);
int b=Integer.parseInt(sb); int c=Integer.parseInt(sc); String kq=””;
DecimalFormat dcf=new DecimalFormat(“#.00″);
if(a==0){if(b==0)
{if(c==0){kq=”PT vô số nghiệm”;}
else{kq=”PT vô nghiệm”;}
}
else{kq=”Pt có 1 No, x=”+dcf.format(-c/b);}
}
else{ double delta=b*b-4*a*c;
if(delta<0)
{kq=”PT vô nghiệm”;}
else if(delta==0)
{kq=”Pt có No kép x1=x2=”+dcf.format(-b/(2*a));}
Else {kq=”Pt có 2 No: x1=”+dcf.format((-b-Math.sqrt(delta))/(2*a)) + “; x2=”+dcf.format((-b-Math.sqrt(delta))/(2*a));}}
txtkq.setText(kq);}
private class MyEvent implements OnClickListener


{ @Override
public void onClick(View arg0) {
if(arg0==btnTieptuc)
{edita.setText(“”); editb.setText(“”); editc.setText(“”); edita.requestFocus();}
else if(arg0.getId()==R.id.btngiaipt)
{ giaiPtb2();}
else if(arg0.getId()==R.id.btnthoat)
{finish();}
}}}


Chúng tôi đã giới thiệu sơ lược xong với các bạn các kiểu lập trình sự cơ bản và thường dùng trong Android.
Hãy dành thêm thời gian để tìm hiểu thật sâu phương diện này nhé, nó sẽ giúp các bạn học lập trình android một cách nhẹ nhàng và dễ dàng hơn.

0 nhận xét:

Copyright © 2013 ĐÀO TẠO LẬP TRÌNH TẠI HÀ NỘI and Blogger Templates - Anime OST.