基于eclipse的android项目实战—博学谷(新功能三)找回密码后自动跳转

本文介绍了一种在找回密码成功后实现自动跳转至登录界面的方法。通过在界面添加一个隐藏的TextView控件用于显示倒计时,并使用Timer与TimerTask进行计数,当倒计时结束后自动跳转至登录界面并关闭当前页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在前面博学谷项目的基础上进行改善和增加新功能

源码资源下载:https://download.csdn.net/download/hyh17808770899/19844673
在这里插入图片描述


博学谷的第三个新功能:找回密码成功后需要自己点击返回才能回到登录界面,下面修改了使其倒计时3s后自动跳回登录界面。

在这里插入图片描述

1、修改xml文件

res目录下的layout文件夹中的activity_find_psw.xml中添加代码:

73行:添加一个隐藏的TextView控件,就放到Button控件的上方

<!-- 找回密码界面倒计时自动跳转到登录界面倒计时显示 -->
<TextView 
    android:id="@+id/tv_countdown"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginRight="35dp"
    android:layout_marginLeft="35dp"
    android:layout_marginTop="10dp"
    android:layout_gravity="center_vertical"
    android:textColor="@android:color/white"
    android:textSize="18sp"
    android:visibility="gone"/>
<!-- 找回密码界面倒计时自动跳转到登录界面倒计时显示 -->

2、修改逻辑代码

china.ynyx.heyunhui.activity包中的FindPswActivity.java文件中添加如下代码:

30行:先声明变量:

private TextView tv_countdown;
private int countdown = 3; //倒计时3s,这里可以修改

51行:

tv_countdown=(TextView)findViewById(R.id.tv_countdown);

102行:

//输入的密保正确,重新给用户设置一个密码
tv_reset_psw.setVisibility(View.VISIBLE);
tv_reset_psw.setText("初始密码:123456");
tv_countdown.setVisibility(View.VISIBLE);
tv_countdown.setText("此界面将在"+countdown+"秒后跳转");
savePsw(userName);
//倒计时跳转
final Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
    @Override
    public void run() {
        runOnUiThread(new Runnable() {      // UI thread
            @Override
            public void run() {
                countdown--;
                tv_countdown.setVisibility(View.VISIBLE);
                tv_countdown.setText("此界面将在"+countdown+"秒后跳转");
                if(countdown == 0){
                    timer.cancel();
                    Intent intent = new Intent(FindPswActivity.this, LoginActivity.class);
                    startActivity(intent);
                    FindPswActivity.this.finish();//跳转后关闭当前页面
                }
            }
        });
    }
};
timer.schedule(timerTask,1000,1000);

完整代码:

package china.ynyx.heyunhui.activity;

import java.util.Timer;
import java.util.TimerTask;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import china.ynyx.heyunhui.R;
import china.ynyx.heyunhui.utils.AnalysisUtils;
import china.ynyx.heyunhui.utils.MD5Utils;

public class FindPswActivity extends AppCompatActivity {

	private TextView tv_main_title,tv_back,tv_user_name,tv_reset_psw,tv_countdown;
    private Button btn_validate;
    private EditText et_user_name,et_validate_name;
    //from为security是从设置密保界面跳转过来的,否则就是从登录界面跳转过来的
    private String from;
    /*找回密码界面倒计时自动跳转到登录界面倒计时显示 */
    private int countdown = 3; //倒计时3s,这里可以修改
    /*找回密码界面倒计时自动跳转到登录界面倒计时显示 */
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_find_psw);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        from=getIntent().getStringExtra("from");
        init();
    }

    //获取界面控件及处理相应控件的点击事件
	private void init() {
		// TODO Auto-generated method stub
		tv_main_title=(TextView)findViewById(R.id.tv_main_title);
        tv_main_title.setText("修改密码");
        tv_back=(TextView)findViewById(R.id.tv_back);
        et_validate_name=(EditText)findViewById(R.id.et_validate_name);
        tv_reset_psw=(TextView)findViewById(R.id.tv_reset_psw);
        /*找回密码界面倒计时自动跳转到登录界面倒计时显示 */
        tv_countdown=(TextView)findViewById(R.id.tv_countdown);
        /*找回密码界面倒计时自动跳转到登录界面倒计时显示 */
        et_user_name=(EditText)findViewById(R.id.et_user_name);
        tv_user_name=(TextView)findViewById(R.id.tv_user_name);
        btn_validate=(Button)findViewById(R.id.btn_validate);
        //通过from判断当前界面
        if("security".equals(from)){
            tv_main_title.setText("设置密保");
        }else{
            tv_main_title.setText("找回密码");
            tv_user_name.setVisibility(View.VISIBLE);
            et_user_name.setVisibility(View.VISIBLE);
        }
        tv_back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FindPswActivity.this.finish();
            }
        });
        btn_validate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String validateName=et_validate_name.getText().toString().trim();
                //设置密保
                if("security".equals(from)){ 
                    if(TextUtils.isEmpty(validateName)) {
                        Toast.makeText(FindPswActivity.this, "请输入要验证的姓名", Toast.LENGTH_SHORT).show();
                        return;
                    }else{
                        Toast.makeText(FindPswActivity.this,"设置密保成功",Toast.LENGTH_SHORT).show();
                        //保存密保到SharedPreferences中
                        saveSecurity(validateName);
                        FindPswActivity.this.finish();
                    }
                }else{//找回密码
                    String userName=et_user_name.getText().toString().trim();
                    String sp_security=readSecurity(userName);
                    if(TextUtils.isEmpty(userName)){
                        Toast.makeText(FindPswActivity.this,"请输入您的用户名",Toast.LENGTH_SHORT).show();
                        return;
                    }else if(!isExistUserName(userName)){
                        Toast.makeText(FindPswActivity.this,"您输入的用户名不存在",Toast.LENGTH_SHORT).show();
                        return;
                    }else if(TextUtils.isEmpty(validateName)) {
                        Toast.makeText(FindPswActivity.this, "请输入要验证的姓名", Toast.LENGTH_SHORT).show();
                        return;
                    }if(!validateName.equals(sp_security)){
                        Toast.makeText(FindPswActivity.this, "输入的密保不正确", Toast.LENGTH_SHORT).show();
                        return;
                    }else {
                    	/*找回密码界面倒计时自动跳转到登录界面倒计时显示 */
                        //输入的密保正确,重新给用户设置一个密码
                        tv_reset_psw.setVisibility(View.VISIBLE);
                        tv_reset_psw.setText("初始密码:123456");
                        tv_countdown.setVisibility(View.VISIBLE);
                        tv_countdown.setText("此界面将在"+countdown+"秒后跳转");
                        savePsw(userName);
                        //倒计时跳转
                        final Timer timer = new Timer();
                        TimerTask timerTask = new TimerTask() {
                            @Override
                            public void run() {
                                runOnUiThread(new Runnable() {      // UI thread
                                    @Override
                                    public void run() {
                                        countdown--;
                                        tv_countdown.setVisibility(View.VISIBLE);
                                        tv_countdown.setText("此界面将在"+countdown+"秒后跳转");
                                        if(countdown == 0){
                                            timer.cancel();
                                            Intent intent = new Intent(FindPswActivity.this, LoginActivity.class);
                                            startActivity(intent);
                                            FindPswActivity.this.finish();//跳转后关闭当前页面
                                        }
                                    }
                                });
                            }
                        };
                        timer.schedule(timerTask,1000,1000);
                        /*找回密码界面倒计时自动跳转到登录界面倒计时显示 */
                    }
                }
            }
        });
	}

	//保存初始化密码
	private void savePsw(String userName) {
		// TODO Auto-generated method stub
		String md5Psw = MD5Utils.MD5("123456");
        SharedPreferences sp = getSharedPreferences("loginInfo",Context.MODE_PRIVATE);
        SharedPreferences.Editor editor =sp.edit();//获取编辑器
        editor.putString(userName,md5Psw);       //保存新密码
        editor.commit();
	}

	//保存密保到SharedPreferences中
	private void saveSecurity(String validateName) {
		// TODO Auto-generated method stub
		SharedPreferences sp = getSharedPreferences("loginInfo",Context.MODE_PRIVATE);
        SharedPreferences.Editor editor =sp.edit();  //获取编辑器
        editor.putString(AnalysisUtils.readLoginUserName(this)+"_security",validateName);       //保存新密码
        editor.commit();
	}

	//从SharedPreferences中读取密保
	private String readSecurity(String userName) {
		// TODO Auto-generated method stub
		SharedPreferences sp = getSharedPreferences("loginInfo",Context.MODE_PRIVATE);
        String security=sp.getString(userName+"_security","");
        return security;
	}

	//从SharedPreferences中根据用户输入的用户名来判断是否有此用户
	private boolean isExistUserName(String userName) {
		// TODO Auto-generated method stub
		boolean hasUserName=false;
        SharedPreferences sp = getSharedPreferences("loginInfo",Context.MODE_PRIVATE);
        String spPsw=sp.getString(userName,"");
        if(!TextUtils.isEmpty(spPsw)){
            hasUserName=true;
        }
        return hasUserName;
	}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨云21

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值