当用户和密码都不为空时登陆按钮可点android

2019-02-01 23:15:24 weixin_40438421 阅读数 1328

话不多说,今天介绍的是用户注册功能模块。

以下图片是我项目中的注册界面:

 

接下来进入正题——————》》》》》

1.首先设置UI界面布局。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">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="40dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="      请填写你的信息:"
            android:textSize="25sp"/>

    </LinearLayout>
    <!-- 分割线 -->
    <View style="@style/bg_line"/>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:gravity="center_vertical"
            android:orientation="horizontal" >
            <EditText
                android:id="@+id/et_user_name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:paddingTop="2dp"
                android:paddingBottom="2dp"
                android:paddingLeft="6dp"
                android:hint="用户名/账号"
                android:singleLine="true"
                android:maxLength="15"
                android:textSize="18sp" />
        </LinearLayout>


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:gravity="center_vertical"
            android:orientation="horizontal" >
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:paddingTop="2dp"
                android:paddingBottom="2dp"
                android:paddingLeft="6dp"
                android:singleLine="true"
                android:hint="请输入密码"
                android:inputType="textPassword"
                android:maxLength="15"
                android:id="@+id/et_psw"
                android:textSize="18sp" />
        </LinearLayout>



        <LinearLayout

            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:gravity="center_vertical"
            android:orientation="horizontal" >
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:paddingTop="2dp"
                android:paddingBottom="2dp"
                android:paddingLeft="6dp"
                android:singleLine="true"
                android:hint="请再次输入密码"
                android:inputType="textPassword"
                android:maxLength="15"
                android:id="@+id/et_psw_again"
                android:textSize="18sp" />
        </LinearLayout>



        <LinearLayout

            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:gravity="center_vertical"
            android:orientation="horizontal" >
            <TextView
                android:layout_width="0px"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_marginLeft="10dp"
                android:paddingLeft="6dp"
                android:gravity="left"
                android:text="性别"
                android:textSize="18sp" />
            <RadioGroup
                android:layout_width="0px"
                android:layout_height="wrap_content"
                android:layout_weight="2.6"
                android:id="@+id/SexRadio"
                android:paddingLeft="5dp">
                <RadioButton
                    android:id="@+id/mainRegisterRdBtnFemale"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="女生"/>
                <RadioButton
                    android:id="@+id/mainRegisterRdBtnMale"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="男生"/>
            </RadioGroup>
        </LinearLayout>



        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:gravity="center_vertical"
            android:orientation="horizontal" >
            <EditText
                android:id="@+id/email"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:paddingTop="2dp"
                android:paddingBottom="2dp"
                android:paddingLeft="6dp"
                android:hint="邮箱"
                android:singleLine="true"
                android:maxLength="15"
                android:textSize="18sp" />
        </LinearLayout>


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:gravity="center_vertical"
            android:orientation="horizontal" >
            <EditText
                android:id="@+id/phonenumber"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:paddingTop="2dp"
                android:paddingBottom="2dp"
                android:paddingLeft="6dp"
                android:hint="手机号"
                android:singleLine="true"
                android:maxLength="15"
                android:textSize="18sp" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:gravity="center_vertical"
            android:orientation="horizontal" >
            <EditText
                android:id="@+id/sign"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:paddingTop="2dp"
                android:paddingBottom="2dp"
                android:paddingLeft="6dp"
                android:hint="个性签名"
                android:singleLine="true"
                android:maxLength="15"
                android:textSize="18sp" />
        </LinearLayout>

    </LinearLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp" >
        <Button
            style="@style/wrap_layout"
            android:id="@+id/btn_register"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_marginTop="40dp"
            android:text="注册"
            android:textSize="24sp"
            android:background="@drawable/shape_bt" />
    </RelativeLayout>

</LinearLayout>

2.Activity的实现。java文件

package com.CWT.navigation.Personal_center;

import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Toast;

import com.CWT.navigation.R;

public class Register extends AppCompatActivity {

    //用户名,密码,再次输入的密码的控件
    private EditText et_user_name,et_psw,et_psw_again,et_email,et_phonenumber,et_signature;
    //用户名,密码,再次输入的密码的控件的获取值
    private String userName,psw,pswAgain,email,phonenumber,Ssex,signature;
    private RadioGroup Sex;
    private Button  btn_register;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //设置页面布局 ,注册界面
        setContentView(R.layout.register);
        //设置此界面为竖屏
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        init();
    }

    private void init() {

        //从activity_register.xml 页面中获取对应的UI控件
        btn_register = (Button) findViewById(R.id.btn_register);
        et_user_name= (EditText) findViewById(R.id.et_user_name);
        et_psw= (EditText) findViewById(R.id.et_psw);
        et_psw_again= (EditText) findViewById(R.id.et_psw_again);
        Sex= (RadioGroup) findViewById(R.id.SexRadio);
        et_email= (EditText) findViewById(R.id.email);
        et_phonenumber= (EditText) findViewById(R.id.phonenumber);
        et_signature=(EditText) findViewById(R.id.sign);


        //注册按钮
        btn_register.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                //获取输入在相应控件中的字符串
                getEditString();
                //判断输入框内容
                int sex;
                int sexChoseId = Sex.getCheckedRadioButtonId();
                switch (sexChoseId) {
                    case R.id.mainRegisterRdBtnFemale:
                        sex = 0;
                        Ssex="女";
                        break;
                    case R.id.mainRegisterRdBtnMale:
                        sex = 1;
                        Ssex="男";
                        break;
                    default:
                        sex = -1;
                        break;
                }

                if(TextUtils.isEmpty(userName)){
                    Toast.makeText(Register.this, "请输入用户名", Toast.LENGTH_SHORT).show();
                }else if(TextUtils.isEmpty(psw)){
                    Toast.makeText(Register.this, "请输入密码", Toast.LENGTH_SHORT).show();
                }else if(TextUtils.isEmpty(pswAgain)) {
                    Toast.makeText(Register.this, "请再次输入密码", Toast.LENGTH_SHORT).show();
                }
                else if(TextUtils.isEmpty(phonenumber)) {
                    Toast.makeText(Register.this, "请输入手机号", Toast.LENGTH_SHORT).show();
                }
                else if(TextUtils.isEmpty(email)) {
                    Toast.makeText(Register.this, "请输入邮箱账号", Toast.LENGTH_SHORT).show();
                }
                else if(TextUtils.isEmpty(signature)) {
                    Toast.makeText(Register.this, "请输入个性签名", Toast.LENGTH_SHORT).show();
                }else if (sex<0){

                    Toast.makeText(Register.this, "请选择性别", Toast.LENGTH_SHORT).show();
                }else if(!psw.equals(pswAgain)){
                    Toast.makeText(Register.this, "输入两次的密码不一样", Toast.LENGTH_SHORT).show();

                    /**
                     *从SharedPreferences中读取输入的用户名,判断SharedPreferences中是否有此用户名
                     */
                }else if(isExistUserName(userName)){
                    Toast.makeText(Register.this, "此账户名已经存在", Toast.LENGTH_SHORT).show();

                }else{
                    Toast.makeText(Register.this, "注册成功", Toast.LENGTH_SHORT).show();
                    //把账号、密码和账号标识保存到sp里面
                    /**
                     * 保存账号和密码到SharedPreferences中
                     */
                    saveRegisterInfo(userName, psw,phonenumber,email,Ssex,signature);
                    //注册成功后把账号传递到LoginActivity.java中
                    // 返回值到loginActivity显示
                    Intent data = new Intent();
                    data.putExtra("userName", userName);
                    setResult(RESULT_OK, data);
                    //RESULT_OK为Activity系统常量,状态码为-1,
                    // 表示此页面下的内容操作成功将data返回到上一页面,如果是用back返回过去的则不存在用setResult传递data值
                    Register.this.finish();
                }
            }
        });
    }
    /**
     * 获取控件中的字符串
     */
    private void getEditString(){
        userName=et_user_name.getText().toString().trim();
        psw=et_psw.getText().toString().trim();
        pswAgain=et_psw_again.getText().toString().trim();
        phonenumber=et_phonenumber.getText().toString().trim();
        email=et_email.getText().toString().trim();
        signature=et_signature.getText().toString().trim();



    }
    /**
     * 从SharedPreferences中读取输入的用户名,判断SharedPreferences中是否有此用户名
     */
    private boolean isExistUserName(String userName){
        boolean has_userName=false;
        //mode_private SharedPreferences sp = getSharedPreferences( );
        // "loginInfo", MODE_PRIVATE
        SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
        //获取密码
        String spPsw=sp.getString(userName, "");//传入用户名获取密码
        //如果密码不为空则确实保存过这个用户名
        if(!TextUtils.isEmpty(spPsw)) {
            has_userName=true;
        }
        return has_userName;
    }
    /**
     * 保存数据到SharedPreferences中SharedPreferences
     */
    private void saveRegisterInfo(String userName, String psw, String phonenumber ,
                                  String email,String sex,String signature){
        String md5Psw = MD5Utils.md5(psw);//把密码用MD5加密
        //loginInfo表示文件名, mode_private SharedPreferences sp = getSharedPreferences( );
        SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
        //获取编辑器, SharedPreferences.Editor  editor -> sp.edit();
        SharedPreferences.Editor editor=sp.edit();
        editor.putString("phonenumber", phonenumber);
        editor.putString("sex", sex);
        editor.putString("email", email);
        editor.putString("userName", userName);
        editor.putString("signature", signature);
        editor.putString(userName, md5Psw);
        editor.apply();
    }
}

代码实现中,基本上都有代码注解,我就不再解释了。

请各位大神指教,本博文内容可能写的有错误,有读者发现错误,可以留言我,希望本博文能够帮到大家

 

 

 

 

2017-05-03 11:28:16 dimudan2015 阅读数 4942

这个问题困扰了我一段时间,拿出来希望对自己以后起提醒作用,也希望对初学者起到一定帮助。所谓困扰,其实就是监听器的作用对象没弄明白,起初一直是作用在Button按钮上,后来才搞明白是应该作用到EditText控件上。界面布局如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
	<EditText 
	    android:id="@+id/name"
	    android:layout_width="match_parent"
	    android:layout_height="wrap_content"
	    android:hint="请输入名字"
	    android:layout_margin="5dp"
	    />
	<EditText 
	    android:id="@+id/password"
	    android:layout_width="match_parent"
	    android:layout_height="wrap_content"
	    android:hint="请输入密码"
	    android:layout_margin="5dp"
	    />
	
	<Button 
	    android:id="@+id/submit"
	    android:layout_width="match_parent"
	    android:layout_height="wrap_content"
	    android:text="提交"
	    android:layout_margin="5dp"
	    android:enabled="false"
	    />
</LinearLayout>

里面就两个EditText控件和一个Button按钮,你们也可以根据项目需要随便设置控件颜色、边框等属性。

Activity代码如下:

name.addTextChangedListener(new TextWatcher() {
			
			@Override
			public void onTextChanged(CharSequence s, int start, int before, int count) {
				if (TextUtils.isEmpty(name.getText()) || TextUtils.isEmpty(password.getText())) {
					submit.setEnabled(Boolean.FALSE);
					Toast.makeText(MainActivity.this, "按钮不可点击", Toast.LENGTH_SHORT).show();
				} else {
					submit.setEnabled(Boolean.TRUE);
					Toast.makeText(MainActivity.this, "按钮可点击", Toast.LENGTH_SHORT).show();
				}
				
			}
			
			@Override
			public void beforeTextChanged(CharSequence s, int start, int count, int after) {
			}
			
			@Override
			public void afterTextChanged(Editable s) {
			}
		});
		password.addTextChangedListener(new TextWatcher() {
			
			@Override
			public void onTextChanged(CharSequence s, int start, int before, int count) {
				if (TextUtils.isEmpty(name.getText()) || TextUtils.isEmpty(password.getText())) {
					submit.setEnabled(Boolean.FALSE);
					Toast.makeText(MainActivity.this, "按钮不可点击", Toast.LENGTH_SHORT).show();
				} else {
					submit.setEnabled(Boolean.TRUE);
					Toast.makeText(MainActivity.this, "按钮可点击", Toast.LENGTH_SHORT).show();
				}
				
			}
			
			@Override
			public void beforeTextChanged(CharSequence s, int start, int count, int after) {
			}
			
			@Override
			public void afterTextChanged(Editable s) {
			}
		});
要想实现EditText不为空时Button按钮才可以点击,就应该监听EditText控件里面是否为空,调用的是addTextChangedListener监听器,项目中需要监听哪些必填项,就要为该控件设置addTextChangedListener监听。


2017-10-12 13:50:33 u010597493 阅读数 868

这篇文章是网上的资源。

public class SomeMonitorEditText implements TextWatcher {

   private Button button;
   private EditText[] text;

   public void SetMonitorEditText(final Button button, final EditText... text) {

      this.button = button;
      this.text = text;


      for (int i = 0; i < text.length; i++) {

         if (text[i] != null) {

            text[i].addTextChangedListener(SomeMonitorEditText.this);
         }

      }
   }

   @Override
   public void beforeTextChanged(CharSequence s, int start, int count,
         int after) {
      // TODO Auto-generated method stub

   }
   @Override
   public void onTextChanged(CharSequence s, int start, int before, int count) {

   }

   @Override
   public void afterTextChanged(Editable s) {
      // TODO Auto-generated method stub
      for (int i = 0; i < text.length; i++) {

         if (text[i].length() == 0) {
            button.setBackgroundResource(R.drawable.graylong_btn);
            button.setEnabled(false);
            return;//这句代码值两千万
         } else {

            button.setBackgroundResource(R.drawable.red_btn);
            button.setEnabled(true);

         }
      }
   }

}

主函数的布局文件就不写了,见图片
这里写图片描述

public class MainActivity extends Activity {

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

        EditText et1 = (EditText) findViewById(R.id.et1);
        EditText et2 = (EditText) findViewById(R.id.et2);
        EditText et3 = (EditText) findViewById(R.id.et3);
        EditText et4 = (EditText) findViewById(R.id.et4);
        Button btn = (Button) findViewById(R.id.btn);

        new SomeMonitorEditText().SetMonitorEditText(btn, et1, et2, et3, et4);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "被点击了", Toast.LENGTH_SHORT).show();
            }
        });

    }

}
2017-05-25 22:50:53 m0_37543394 阅读数 48251

一、实现用户登录时若没有输入用户名,给出用户名不能为空的提示,若没有输入密码,给出密码不能为空的提示。

 

1、首先在index.jsp里面建立一个form表单,action为当我提交表单时用来处理程序的url地址,我想要在Loginservlet里面处理,它的url/login,所以写上action= “/login”method是用来指定数据传送到服务器的方式,选用的方法是post(对于输入密码更安全)。如图所示

 

2、当我点击登录按钮时,控制权跳转到Loginservlet,首先我要在Loginservlet里面得到用户输入的内容(要在dopost方法里面写,因为我的methodpost),用String string = request.getParameter("username")来得到,requestJSP的一个内置对象,用来处理HTTP请求中的各项参数,在这里,我们通过request对象的getParameter()方法获取传递的参数值。这里的username就是input里面的name,因为name是用来指定输入字段的名称。通过同样的方式,我们就可以在Loginservlet将用户输入的用户名和密码得到了。具体代码如下:

 

3、在Servlet中判断用户名和密码是否为空,然后将结果返回给页面。

如果用户名为空,我们给前端返回一个字符串为 “null1”,如果密码为空,我们给前端返回一个不一样的字符串 “null2”。在进行请求转发时,需要把一些数据传递到转发后的页面进行处理。我们需要使用到request对象中的setAttribute()方法,将数据保存到request范围的变量中。request的语法格式如下:request.setAttribute(String name,Object object),其中name表示变量名,在转发后的页面取数据时,就是通过name这个变量名来获取的。注意要加引号。Object则可以是任意类型。

而通过request.getRequestDispatcher().forward(request.response)将请求转给另一个页面处理,我想要转回到index.jsp页面中。

4、前端接收后台传过来的数据,并做相应的处理。

此时已跳转到index.jsp页面中,我们可以在JSP里面嵌入java代码。采用request.getAttribute().toString()来获取保存在request范围内的变量,但是将java代码片段嵌入到JSP页面中,会使页面看起来很乱,而使用EL则比较简洁。

EL是一种表达式语言,在Web开发中比较常用,通常与JSTL一同使用。以“${”开头,以“}”结束,中间为合法的表达式。

而使用JSTLl可以取代在传统JSP程序中嵌入的Java代码的做法,大大提高程序的可维护性。由5个功能不同的标签库组成,最常用的就是核心标签库。在使用之前,必须在JSP页面的顶部使用<%@ taglib%>指令定义引用的标签库和访问前缀。核心标签库的指令格式<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>

那我们现在使用核心标签库的<c:choose><c:when>标签,来实现条件的选择,如果获取到的参数为null1,则弹出用户名不能为空的提示,如果获取到的参数为null2,则弹出密码不能为空的提示。

弹框我使用到了JavaScriptwindow对象的alert()方法,使用时要加上<script></script>标签。代码如下:

 

5、最后效果如下

2018-05-16 16:41:04 huanhuan59 阅读数 2593

1.在登陆的Java文件中:

case R.id.bt_login://登陆页面的ID
                if (checkBox.isChecked()) {
                    //checkBox.setChecked(true);
                    if (judCord())//判断验证码
                    {
                        SMSSDK.submitVerificationCode("86", phone_number, cord_number);//提交手机号和验证码
                        setContentView(R.layout.fragment_my1);

                        flag = false;
                    }
                    break;
                }else {
                Toast.makeText(this,"未选择复选框协议",Toast.LENGTH_SHORT).show();
                }

就可以了