Giới thiệu
Hướng dẫn này minh họa cách kiểm tra hợp lệ (validate) dữ liệu nhập vào EditText trong Android bằng cách tạo một InputFilter tùy chỉnh sử dụng Regular Expression (Regex) để chỉ cho phép ký tự chữ cái, số và dấu gạch dưới.
Các bước thực hiện
Bước 1: Tạo dự án mới
Mở Android Studio, chọn File → New Project và điền thông tin cần thiết.
Bước 2: Thiết kế giao diện (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
tools:context=".MainActivity">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Nhập văn bản chữ và số"
android:inputType="text"
tools:ignore="Autofill" />
</RelativeLayout>
Bước 3: Tạo class ValidateFilter (InputFilter tùy chỉnh)
package app.tutorialspoint.com.sample;
import android.text.InputFilter;
import android.text.Spanned;
import android.util.Log;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ValidateFilter implements InputFilter {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
String checkMe = String.valueOf(source.charAt(i));
Pattern pattern = Pattern.compile("[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789_]*");
Matcher matcher = pattern.matcher(checkMe);
boolean valid = matcher.matches();
if (!valid) {
Log.d("", "invalid");
return "";
}
}
return null;
}
}
Bước 4: Viết code MainActivity
package app.tutorialspoint.com.sample;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.text.InputFilter;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText = findViewById(R.id.editText);
editText.setFilters(new InputFilter[]{new ValidateFilter()});
}
}
Bước 5: Cấu hình AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.tutorialspoint.com.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Chạy ứng dụng
Kết nối thiết bị Android thật, chạy ứng dụng từ Android Studio. Thử nhập các ký tự đặc biệt - chúng sẽ bị chặn, chỉ chấp nhận chữ cái, số và dấu gạch dưới.
