sharedperferences 记住密码,自动登录demo

本文介绍如何利用SharedPreferences在Android应用中保存用户的登录信息,包括用户名、密码等,并实现记住密码和自动登录的功能。

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

xml 文件


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical" >
 
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="50dp"
        android:id="@+id/lin1"
        >
        <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="用户名" />
        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="7"
            android:id="@+id/name"
            />
    </LinearLayout>
     <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="50dp"
        android:id="@+id/lin2"
        
        >
        <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="密码" />
        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="7"
            android:id="@+id/pass"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="50dp"
        android:id="@+id/lin3"
        >
        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/check"
            
            />
        <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="记住密码" />
         <CheckBox
             android:layout_marginLeft="50dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/check1"
            
            />
        <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="自动登录" />
        
    </LinearLayout>
    <Button
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn"
        android:text="登录"
        />
</LinearLayout>


代码

package com.example.sharedperferences_demo1;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
      private EditText name,pass;
      private SharedPreferences sp;
      private Button btn;
      private CheckBox check,check1;
      private  Editor edit;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //组件
        name=(EditText) findViewById(R.id.name);
        pass=(EditText) findViewById(R.id.pass);
        check=(CheckBox) findViewById(R.id.check);
        check1=(CheckBox) findViewById(R.id.check1);
        btn=(Button) findViewById(R.id.btn);
        //sharedperferences
        sp=getSharedPreferences("user", MODE_PRIVATE);
       edit = sp.edit();
        //拿到状态码并判断
       boolean zzd = sp.getBoolean("jz", false);
       boolean zdd = sp.getBoolean("zd", false);
       if(zzd){
           String strname = sp.getString("name", null);
           String strpass = sp.getString("pass", null);
           name.setText(strname);
           pass.setText(strpass);
          check.setChecked(true);
       }
       if(zdd){
           check1.setChecked(true);
           Intent it=new Intent(MainActivity.this,LoginActivity.class);
           startActivity(it);
           finish();
       }
        //按钮监听
        btn.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                
                    //判断记住密码选框
                    if (check.isChecked()) {
                        String namestr = name.getText().toString();
                        String passstr = pass.getText().toString();
                        
                        edit.putString("name", namestr);
                        edit.putString("pass", passstr);
                        //状态码
                        edit.putBoolean("jz", true);
                        edit.commit();
                    }
                    //判断自动登录选框
                    if(check1.isChecked()){
                        edit.putBoolean("zd", true);
                        edit.commit();
                        
                    }
                    
                    
                    Intent it=new Intent(MainActivity.this,LoginActivity.class);
                    startActivity(it);
                }
            
        });
        
        
        //清除数据
        Editor ed = sp.edit();
        ed.clear();
        ed.commit();
        
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}



内容概要:本文档为《400_IB Specification Vol 2-Release-2.0-Final-2025-07-31.pdf》,主要描述了InfiniBand架构2.0版本的物理层规范。文档详细规定了链路初始化、配置与训练流程,包括但不限于传输序列(TS1、TS2、TS3)、链路去偏斜、波特率、前向纠错(FEC)支持、链路速度协商及扩展速度选项等。此外,还介绍了链路状态机的不同状态(如禁用、轮询、配置等),以及各状态下应遵循的规则和命令。针对不同数据速率(从SDR到XDR)的链路格式化规则也有详细说明,确保数据包格式和控制符号在多条物理通道上的一致性和正确性。文档还涵盖了链路性能监控和错误检测机制。 适用人群:适用于从事网络硬件设计、开发及维护的技术人员,尤其是那些需要深入了解InfiniBand物理层细节的专业人士。 使用场景及目标:① 设计和实现支持多种数据速率和编码方式的InfiniBand设备;② 开发链路初始化和训练算法,确保链路两端设备能够正确配置并优化通信质量;③ 实现链路性能监控和错误检测,提高系统的可靠性和稳定性。 其他说明:本文档属于InfiniBand贸易协会所有,为专有信息,仅供内部参考和技术交流使用。文档内容详尽,对于理解和实施InfiniBand接口具有重要指导意义。读者应结合相关背景资料进行学习,以确保正确理解和应用规范中的各项技术要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jonly_W

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

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

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

打赏作者

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

抵扣说明:

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

余额充值