Lập trình Android - Inline anonymous listener
Xử lí sự kiện bằng lớp nặc danh (Inline anonymous listener)
Đây là một cách bắt sự kiện gọi là kinh điển của những người lập trình viên Android vì nó được sử dụng rất là nhiều do đơn giản và tiện dụng.Đây là cách bắt sự kiện dựa vào ID của view.
Tạo ra một bộ lắng nghe nạc danh
Định nghĩa và truyền phương thức setOnClickListener()
Ví dụ: Chúng ta có project tên là InlineListener trong có 2 button, chúng ta sẽ tạo sự kiện cho 2 button này, dưới đây là tập tin XML:
<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.MainActivity" >
<Button
android:id="@+id/btnLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14dp"
android:layout_marginTop="57dp"
android:text="Login" />
<Button
android:id="@+id/btnLogout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/btnLogin"
android:layout_alignBottom="@+id/btnLogin"
android:layout_marginLeft="33dp"
android:layout_toRightOf="@+id/btnLogin"
android:text="Logout" />
</RelativeLayout>
Và đây là cách bắt sự kiện trong MainAcitivty: Trong code Java chúng ta cần khai báo 2 button, và set sự kiện cho 2 button thông qua phương thức setOnClickListener()
package hiepsiit.com;
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 {
//Cần khai báo 2 nút Button
Button btnLogin, btnLogout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// lấy 2 button từ file xml
btnLogin = (Button)findViewById(R.id.btnLogin);
btnLogout = (Button)findViewById(R.id.btnLogout);
// Đặt sự kiện cho từng button
btnLogin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplication(), "Hiệp Sĩ IT: Bạn đang Click vào Button Login", Toast.LENGTH_LONG).show();
}
});
btnLogout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplication(), "Hiệp Sĩ IT: Bạn đang Click vào Button Logout", Toast.LENGTH_LONG).show();
}
});
}
}
Chú ý: Trong quá trình thêm các phương thức nó sẽ báo lỗi thiếu thự viện, sửa lỗi bằng cách rê chuột vào sẽ hiện thị ra màn hình:
Sau đó click vào import để thêm thư viện
Với kiểu xử lý sự kiện này thì bạn sẽ thấy thông qua id của view đúng không nào?Sau khi khởi tạo xong Button thì bạn gọi phương thức setOnClickListener và truyền vào param là Inner Anonymous (lớp nặc danh), lớp này có công dụng bắt sự kiện cho view gọi nó.
Download ví dụ
Ứ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ả click vào nút Login:
Kết quả click vào nút Logout: