You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:基于AlertDialog.Builder实现邮箱验证器的MainActivity代码编写

嘿,我来帮你搞定这个邮箱验证器的实现!咱们一步步来,先理清楚需求,然后把代码拆成几块,你跟着抄就行~

实现邮箱验证器的完整步骤

1. 先准备布局文件(activity_main.xml)

首先得有输入邮箱的输入框、显示保存结果的文本框,还有触发验证的按钮,给你写个基础布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp"
    android:gap="16dp">

    <EditText
        android:id="@+id/et_email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter your email"
        android:inputType="textEmailAddress"/>

    <Button
        android:id="@+id/btn_validate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Validate Email"/>

    <TextView
        android:id="@+id/tv_saved_email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="16sp"/>

</LinearLayout>

2. MainActivity中的核心逻辑

下面是Java版本的核心代码(如果需要Kotlin版本可以告诉我),主要完成控件绑定、邮箱格式验证、弹窗逻辑这三件事:

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import java.util.regex.Pattern;

public class MainActivity extends AppCompatActivity {

    private EditText etEmail;
    private TextView tvSavedEmail;
    // 通用邮箱正则,覆盖绝大多数常见格式
    private static final Pattern EMAIL_PATTERN = Pattern.compile(
            "^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$"
    );

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 初始化界面控件
        etEmail = findViewById(R.id.et_email);
        tvSavedEmail = findViewById(R.id.tv_saved_email);
        Button btnValidate = findViewById(R.id.btn_validate);

        // 给验证按钮绑定点击事件
        btnValidate.setOnClickListener(v -> validateEmail());
    }

    private void validateEmail() {
        String inputEmail = etEmail.getText().toString().trim();

        // 先处理空输入的情况(可选,你可以根据需求调整)
        if (inputEmail.isEmpty()) {
            new AlertDialog.Builder(this)
                    .setTitle("提示")
                    .setMessage("请输入邮箱地址")
                    .setPositiveButton("OK", (dialog, which) -> dialog.dismiss())
                    .show();
            return;
        }

        // 验证邮箱格式是否合法
        boolean isEmailValid = EMAIL_PATTERN.matcher(inputEmail).matches();

        if (isEmailValid) {
            // 格式正确的弹窗:仅显示提示和OK按钮
            new AlertDialog.Builder(this)
                    .setTitle("验证成功")
                    .setMessage("Email address is Correct")
                    .setPositiveButton("OK", (dialog, which) -> {
                        dialog.dismiss();
                        // 本来就在主界面,点击OK关闭弹窗即可;如果是从其他页面跳转来的,这里可以加finish()返回
                    })
                    .setCancelable(false) // 必须点击按钮才能关闭弹窗
                    .show();
        } else {
            // 格式错误的弹窗:带Save和Clear按钮
            new AlertDialog.Builder(this)
                    .setTitle("验证失败")
                    .setMessage("Email address is incorrect")
                    .setPositiveButton("Save", (dialog, which) -> {
                        // 把输入的邮箱保存到TextView
                        tvSavedEmail.setText("Saved Email: " + inputEmail);
                        dialog.dismiss();
                    })
                    .setNegativeButton("Clear", (dialog, which) -> {
                        // 清空输入框和保存的文本
                        etEmail.setText("");
                        tvSavedEmail.setText("");
                        dialog.dismiss();
                    })
                    .setCancelable(false)
                    .show();
        }
    }
}

3. 关键细节提示

  • 正则表达式:我用的是通用版,如果需要支持更特殊的域名格式,可以自行调整正则规则;
  • Java版本兼容:如果你的项目用的是Java 8以下,需要把lambda表达式改成匿名内部类的写法(比如setPositiveButton的点击事件);
  • 返回主界面:因为验证成功的弹窗本身就在主界面,所以点击OK只需要关闭弹窗即可,不需要额外的返回逻辑。

内容的提问来源于stack exchange,提问作者Matheo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:58:56