以相对布局的方式,实现一个Activity。要求界面有说明文字,以及姓名、性别、年龄输入框。在输入过程中,当输入框焦点改变时,检验用户输入的年龄是否合法,如果不合法,提示重新输入。
先来看看界面效果:
界面布局代码如下:
后端代码如下:
package com.example.register;import android.os.Bundle;import android.text.Editable;import android.text.TextWatcher;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Login extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); final EditText editText1=findViewById(R.id.EdiText1);//获取姓名输入框 final EditText editText2=findViewById(R.id.EdiText2);//获取性别输入框 final EditText editText3=findViewById(R.id.EdiText3);//获取年龄输入框 final TextView textView5=findViewById(R.id.TextView5);//显示输入的信息 Button button1=(Button) findViewById(R.id.Button1);//获取确定按钮 button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String name=editText1.getText().toString(); String sex=editText2.getText().toString(); String age=editText3.getText().toString(); textView5.setText("姓名:"+name+ "性别:"+sex+ "年龄:"+age); } }); editText3.addTextChangedListener(new TextWatcher() { //改变之前会执行的方法 @Override public void beforeTextChanged(CharSequence s, int start, int i1, int i2) { } //实时监听 @Override public void onTextChanged(CharSequence s, int start, int i1, int i2) { String age1=editText3.getText().toString(); //Pattern pattern=Pattern.compile("^((13[0-9])|(15[^4])|(18[0-9])|(17[0-8])|(147,145))\\d{8}$");//11位手机号正则表达式 Pattern pattern=Pattern.compile("[\\x30-\\x39]");//正则表达式,0-9岁,剩下的岁数我不懂了; Matcher matcher=pattern.matcher(age1); //进行年龄匹配 if (matcher.matches()){ //提示 Toast.makeText(getApplicationContext(), "您输入了正确的年龄", Toast.LENGTH_LONG).show();}else { //提示 Toast.makeText(getApplicationContext(), "您输入的年龄不正确:"+s.toString(), Toast.LENGTH_LONG).show(); } } @Override public void afterTextChanged(Editable s) { } }); }}