Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách xóa onClickListener cho View trong Android

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() {...})