Giới thiệu
Trong một số tình huống, chúng ta cần vô hiệu hóa sự kiện click cho một View. Ví dụ này minh họa cách xóa OnClickListener bằng cách gán giá trị null.
Bước 1: Tạo dự án mới
Android Studio → File → New Project → Cấu hình dự án.
Bước 2: Giao diện (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:id="@+id/parent"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/text"
android:textSize="28sp"
android:textAlignment="center"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Bước 3: Vô hiệu hóa click (src/MainActivity.java)
package com.example.andy.myapplication;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
int view = R.layout.activity_main;
TextView textview;
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(view);
textview = findViewById(R.id.text);
textview.setText("TextView này không có OnClickListener");
textview.setOnClickListener(null); // Vô hiệu hóa sự kiện click
}
}
Giải thích
Phương thức setOnClickListener(null) sẽ gỡ bỏ bất kỳ OnClickListener nào đã được gán trước đó cho View. Khi người dùng nhấn vào TextView, không có hành động nào xảy ra.
Chạy ứng dụng
Chạy app trên thiết bị. Nhấn vào TextView → Không có phản ứng gì (không Toast, không navigation, không log...).
Lưu ý thêm
- Cách này cũng áp dụng cho Button, ImageView, hoặc bất kỳ View nào
- Để gán lại listener sau này, chỉ cần gọi
setOnClickListener(new View.OnClickListener() {...})