用戶登錄保存數據實例(慕課筆記 使用SharedPreferences保存用戶名)

来源:http://www.cnblogs.com/moonlightml/archive/2017/02/04/6364586.html
-Advertisement-
Play Games

學習視頻之後自己操作時的筆記。 0.視頻地址:http://www.imooc.com/video/3265 1.功能預覽: 說明:1)輸入錯誤用戶名和密碼,點擊登錄,彈出提示框“禁止登錄”; 2)輸入正確用戶名和密碼,點擊登錄,彈出提示框“登錄成功”; 3)輸入正確用戶名和密碼,並且勾選保存用戶名 ...


學習視頻之後自己操作時的筆記。

0.視頻地址:http://www.imooc.com/video/3265

1.功能預覽:

說明:1)輸入錯誤用戶名和密碼,點擊登錄,彈出提示框“禁止登錄”;

        2)輸入正確用戶名和密碼,點擊登錄,彈出提示框“登錄成功”;

        3)輸入正確用戶名和密碼,並且勾選保存用戶名,點擊登錄,彈出框顯示“登錄成功”,退出APP,再次打開,用戶名已有。

2.具體佈局:

 activity_main.xml:

<RelativeLayout 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" >

     <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="16dp"
        android:text="用戶名:" />

    <EditText
        android:id="@+id/etuserName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/textView1"
        android:layout_toRightOf="@+id/textView1"
        android:ems="10" />

    <TextView
        android:id="@+id/aa"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/etuserName"
        android:text="密        碼" />

    <EditText
        android:id="@+id/etuserPass"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/etuserName"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/aa"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/btnLogin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/etuserPass"
        android:layout_marginTop="62dp"
        android:onClick="doClick"
        android:text="登陸" />

    <Button
        android:id="@+id/btnCancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/btnLogin"
        android:layout_alignBottom="@+id/btnLogin"
        android:layout_toRightOf="@+id/btnLogin"
        android:onClick="doClick"
        android:text="取消" />

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/btnCancel"
        android:layout_below="@+id/etuserPass"
        android:layout_marginTop="15dp"
        android:checked="false"
        android:text="保存用戶名" />
    
</RelativeLayout>
View Code

 

3.MainActivity.java:

public class MainActivity extends Activity {
    EditText etUserName,etUserPass;
    CheckBox chk;
    SharedPreferences pref;
    Editor editor;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //綁定對應佈局控制項
        etUserName=(EditText)findViewById(R.id.etuserName);
        etUserPass=(EditText)findViewById(R.id.etuserPass);
        chk=(CheckBox)findViewById(R.id.checkBox1);
        pref=getSharedPreferences("UserInfo",MODE_PRIVATE);
        editor=pref.edit();
        String name=pref.getString("userName", "");
        
        if(name==null){
            chk.setChecked(false);
        }else{
            chk.setChecked(true);
            etUserName.setText(name);
        }
    }
//為按鈕添加響應
public void doClick(View v){
    switch(v.getId()){
    case R.id.btnLogin:
        //轉成字元串進行判斷
        String name=etUserName.getText().toString().trim();
        String pass=etUserPass.getText().toString().trim();
        if("admin".equals(name)&&"123456".equals(pass)){
            if(chk.isChecked()){
                //用戶名與密碼均正確且保存用戶名確認框處於選,
                //則保存數據並提交到資料庫
                editor.putString("userName", name);
                editor.commit();
            }else{
                editor.remove("userName");
                editor.commit();
            }
            //加信息提示框
            Toast.makeText(MainActivity.this, "登錄成功", 
                    Toast.LENGTH_LONG).show();
            }else{Toast.makeText(MainActivity.this, "禁止登錄", 
                Toast.LENGTH_LONG).show();    
        }
        break;
        default:
            break;
    }
}
    
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 示例代碼: view.setTag(R.string.action_settings,hodler.content); 接收兩個值,一個是key值,必須是唯一值,而且要寫在values/string.xml 裡面,例如 <resources> <item type ="id" name = "fff ...
  • 英文原文:Picking your compileSdkVersion, minSdkVersion, and targetSdkVersion 作者:Ian Lake,Google Android 推廣工程師;翻譯:南韓愷。 當你發佈一個應用之後,(取決於具體的發佈時間)可能沒過幾個月 Andro ...
  • 安卓常用數據存儲方式之一SQLite學習及操作筆記 0.視頻地址:http://www.imooc.com/video/3382 1.每個程式都有自己的資料庫 預設情況下是各自互不幹擾 1)創建一個資料庫並且打開; 2)使用游標cursor相當於存儲結果的集合,可理解為list; 3)結束後必須釋放 ...
  • 基本結構圖(重要) Director: 有那些作用? OpenGL ES的初始化,場景的轉換,游戲暫停繼續的控制,世界坐標和GL坐標之間的切換,對節點(游戲元素)的控制,游戲數據的保存調用,屏幕尺寸的獲取 控制場景的常用方法 runWithScene( Scene *scene ) 啟動游戲,並運行 ...
  • activity_home.xml home_list_item.xml style.xml color.xml HomeActivity.java 知識點: GirdView + BaseAdapter+點擊事件 自定義TextView ...
  • 作者:Antonio Leiva 時間:Feb 2, 2017 原文鏈接:https://antonioleiva.com/functional-operations-collections-kotlin/ 對於我來說,我必須承認用Java代碼處理列表是最令人沮喪的事之一。 在這方面,雖然Java ...
  • 根據功能模塊劃分(Android開發推薦此方法) - Activity mobilesafe.activty - 後臺服務 mobilesafe.service - 廣播接受者 mobilesafe.receiver - 資料庫 mobilesafe.db.dao - 對象(java bean) m ...
  • 在google play上發佈apk,當上傳了apk文件,填寫了相關的內容信息和介紹圖片、圖標後,出現“發佈應用”始終灰色無法點擊,查看原因顯示如下問題: 其中支持的設備數量始終顯示為0,懷疑是編譯出來的apk哪裡不規範! 經過對原有工程代碼的查找修改,去除了mips和x86兩個jniLibs下的鏈 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...