Android制作登录页面并且记住账号密码功能的实现代码

下面是“Android制作登录页面并且记住账号密码功能的实现代码”完整攻略:

1. 编写登录页面布局

首先需要创建一个登录页面的布局,可以使用EditTextButton等组件实现,同时建议使用LinearLayoutRelativeLayout等布局组件实现页面排版。

示例代码:

<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/username_et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入用户名"/>

    <EditText
        android:id="@+id/password_et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码"
        android:inputType="textPassword"/>

    <CheckBox
        android:id="@+id/remember_cb"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="记住密码"/>

    <Button
        android:id="@+id/login_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登录"/>
</LinearLayout>

2. 处理登录逻辑

在实现登录功能之前,需要先将界面的各控件引用到Java代码中,通过findViewById方法获取它们的引用(注意此处的R.id.前缀)。然后在登录按钮的OnClickListener中编写登录逻辑,包括读取输入的用户名和密码,验证用户名和密码是否正确等操作。实现完登录逻辑之后,可以在登录成功后根据勾选状态来决定是否存储用户名和密码。

示例代码:

public class LoginActivity extends AppCompatActivity {

    private EditText mUsernameEt;
    private EditText mPasswordEt;
    private CheckBox mRememberCb;

    private SharedPreferences mSharedPreferences;

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

        // 获取控件引用
        mUsernameEt = findViewById(R.id.username_et);
        mPasswordEt = findViewById(R.id.password_et);
        mRememberCb = findViewById(R.id.remember_cb);

        // 获取SharedPreferences对象
        mSharedPreferences = getSharedPreferences("user_info", MODE_PRIVATE);

        // 设置登录按钮的OnClickListener
        findViewById(R.id.login_btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 获取输入的用户名和密码
                String username = mUsernameEt.getText().toString();
                String password = mPasswordEt.getText().toString();

                // TODO: 验证用户名和密码是否正确,此处略去

                // 根据是否勾选“记住密码”存储用户名和密码
                if (mRememberCb.isChecked()) {
                    SharedPreferences.Editor editor = mSharedPreferences.edit();
                    editor.putString("username", username);
                    editor.putString("password", password);
                    editor.apply();
                } else {
                    // 不记住密码则清除SharedPreferences存储的用户名和密码
                    SharedPreferences.Editor editor = mSharedPreferences.edit();
                    editor.remove("username");
                    editor.remove("password");
                    editor.apply();
                }

                // 登录成功后跳转到下一个页面
                Intent intent = new Intent(LoginActivity.this, NextActivity.class);
                startActivity(intent);
                finish();
            }
        });

        // 如果SharedPreferences中有存储的用户名和密码,则自动填充
        String username = mSharedPreferences.getString("username", "");
        String password = mSharedPreferences.getString("password", "");
        mUsernameEt.setText(username);
        mPasswordEt.setText(password);
    }
}

在上述代码中,SharedPreferences是用来存储数据的类,它可以将数据以键-值对的形式存储在应用程序的本地存储空间中。在这个示例中,我们通过getSharedPreferences方法获取了一个名为“user_info”的SharedPreferences对象,并在登录成功之后根据勾选状态来存储/清除用户名和密码。

3. 处理记住密码功能

在上面的示例代码中已经演示了如何根据勾选状态来存储和清除用户名和密码,接下来需要在应用程序启动时判断SharedPreferences中是否存在存储的用户名和密码,如果存在,则自动填充到对应的EditText中。

示例代码:

public class LoginActivity extends AppCompatActivity {

    private EditText mUsernameEt;
    private EditText mPasswordEt;
    private CheckBox mRememberCb;

    private SharedPreferences mSharedPreferences;

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

        // 获取控件引用
        mUsernameEt = findViewById(R.id.username_et);
        mPasswordEt = findViewById(R.id.password_et);
        mRememberCb = findViewById(R.id.remember_cb);

        // 获取SharedPreferences对象
        mSharedPreferences = getSharedPreferences("user_info", MODE_PRIVATE);

        // 设置登录按钮的OnClickListener
        findViewById(R.id.login_btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 获取输入的用户名和密码
                String username = mUsernameEt.getText().toString();
                String password = mPasswordEt.getText().toString();

                // TODO: 验证用户名和密码是否正确,此处略去

                // 根据是否勾选“记住密码”存储用户名和密码
                if (mRememberCb.isChecked()) {
                    SharedPreferences.Editor editor = mSharedPreferences.edit();
                    editor.putString("username", username);
                    editor.putString("password", password);
                    editor.apply();
                } else {
                    // 不记住密码则清除SharedPreferences存储的用户名和密码
                    SharedPreferences.Editor editor = mSharedPreferences.edit();
                    editor.remove("username");
                    editor.remove("password");
                    editor.apply();
                }

                // 登录成功后跳转到下一个页面
                Intent intent = new Intent(LoginActivity.this, NextActivity.class);
                startActivity(intent);
                finish();
            }
        });

        // 如果SharedPreferences中有存储的用户名和密码,则自动填充
        String username = mSharedPreferences.getString("username", "");
        String password = mSharedPreferences.getString("password", "");
        mUsernameEt.setText(username);
        mPasswordEt.setText(password);

        // 如果用户名和密码都不为空,则自动勾选“记住密码”
        if (!TextUtils.isEmpty(username) && !TextUtils.isEmpty(password)) {
            mRememberCb.setChecked(true);
        }
    }
}

上面的示例代码中,在onCreate方法中增加了一段判断:如果用户名和密码都不为空,则自动勾选“记住密码”。这样即使在应用程序关闭后重新启动,用户也可以保留之前勾选的状态。

总结

通过上述示例代码,我们可以实现一个登录页面并且记住账号密码。其中最关键的就是使用SharedPreferences类来存储用户名和密码,实现记住密码的功能。

另外,可以根据具体业务需求对登录页面进行更多的扩展和优化,比如加入验证码、使用第三方登录等,以提高用户体验。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android制作登录页面并且记住账号密码功能的实现代码 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Android TextView中文本点击文字跳转 (代码简单)

    下面我来为您详细讲解“Android TextView中文本点击文字跳转 (代码简单)”的完整攻略。 1. 概述 在 Android 中,TextView 是经常被使用的一个控件,使用场景非常广泛。其中一个常见的需求就是在 TextView 中点击不同的文本,跳转到不同的界面或进行其他处理。 本文将介绍如何使用 SpannableString 来实现文本点击…

    other 2023年6月26日
    00
  • C++Node类Cartographer开始轨迹的处理深度详解

    “C++Node类Cartographer开始轨迹的处理深度详解”是关于使用C++ Node类库Cartographer中开始轨迹处理的详细攻略。 在Cartographer中,开始轨迹处理包括以下几个步骤: 1.创建一个Cartographer运行时环境 需要使用Cartographer的前提是已经在计算机上安装了Cartographer运行时环境,可以在…

    other 2023年6月26日
    00
  • 想变就变:轻轻松松切换IP地址

    想变就变: 轻轻松松切换IP地址攻略 在本攻略中,我将详细介绍如何轻松切换IP地址的方法。切换IP地址可以帮助您保护个人隐私、绕过地理限制、解决网络访问问题等。以下是完整的攻略步骤: 步骤一:使用VPN服务 VPN(Virtual Private Network)是一种通过建立加密隧道来隐藏您的真实IP地址的服务。通过使用VPN,您可以选择连接到不同的服务器…

    other 2023年7月30日
    00
  • linux怎么关闭iptableslinux如何关闭防火墙

    当然,我很乐意为您提供关于“Linux如何关闭iptables防火墙”的完整攻略。以下是详细的步骤说明: 步骤说明 iptables是Linux系统中一个防火墙工具,用于控制网络流量。以下是关闭iptables防火墙的详细步骤: 打开终端或命令行界面。 输入以下命令以停止iptables: sudo systemctl stop iptables 输入以下命…

    other 2023年5月9日
    00
  • vue弹出框组件封装实例代码

    下面我将为你详细讲解“Vue弹出框组件封装实例代码”的攻略。 一、组件功能 我们要封装的组件是一个弹出框组件,其功能包括: 支持自定义标题和内容 支持自定义底部按钮(例如确定和取消) 支持点击遮罩层关闭弹出框 二、组件使用 在使用该组件时,我们需要做以下几步: 下载并安装该组件所需要的依赖库 在项目中引入该组件 使用该组件 1. 下载并安装依赖库 该组件所需…

    other 2023年6月25日
    00
  • 微信小程序文章详情页面实现代码

    article: {} }, onLoad: function(options) { // 从上一个页面获取文章数据 const articleData = options.articleData; // 将文章数据保存到data中 this.setData({ article: articleData }); }}); ## 步骤五:跳转到文章详情页面 在…

    other 2023年9月7日
    00
  • 死亡空间重制版Xbox手柄连不上怎么办 Xbox手柄不能用解决方法

    死亡空间重制版Xbox手柄连不上怎么办 Xbox手柄不能用解决方法 问题描述 最近有一批玩家在玩死亡空间重制版时发现他们的Xbox手柄无法连上,也不起作用。这是因为一些常见的问题导致的,有办法解决这个问题吗? 解决方法 方法1:检查电池 如果你的Xbox手柄无法连接,请首先检查你的手柄电池是否正常。如果电池量不足,手柄将无法工作。你可以尝试更换新电池或使用电…

    other 2023年6月27日
    00
  • 基于php流程控制语句和循环控制语句(讲解)

    下面就来详细讲解一下基于php流程控制语句和循环控制语句: 流程控制语句 if语句 if语句是PHP中最基本的流程控制语句,用于根据条件来执行不同的代码块。 if (condition) { // 如果条件为真执行这里的代码 } else { // 如果条件为假执行这里的代码 } 示例1: $num = 5; if ($num > 10) { echo…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部