2012-02-21 12 views
14

मैं उपयोगकर्ता आईडी और पासवर्ड याद रखने के लिए एक चेकबॉक्स बटन रखना चाहता हूं। क्या कोई मुझे सही दिशा में मार्गदर्शन कर सकता है कि इसे कैसे शुरू किया जाए?एक "मुझे याद रखें" चेकबॉक्स

असल कुंजी यहाँ SharedPreferences है:

+0

आप पहले से ही मुझे याद कार्यक्षमता को छोड़कर पूरा लॉगिन समारोह का निर्माण किया है? – WarrenFaith

उत्तर

58

मैं बस अपना एप्लिकेशन में यह बनाया गया है, यहाँ बुनियादी कोड और कुछ स्पष्टीकरण है। आप एक SharePreferences ऑब्जेक्ट सेट अप करेंगे और उपयोगकर्ता ने उन्हें दर्ज करने के बाद अपना उपयोगकर्ता नाम और पासवर्ड स्टोर करेंगे। फिर, जब वे एप्लिकेशन को फिर से चलाते हैं, वरीयताओं का डेटा संग्रहित होगा और फिर लॉगिन फ़ील्ड को दोबारा बदल देगा।

LoginActivity.java

package com.realsimpleapps.LoginTesting; 

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.inputmethod.InputMethodManager; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.EditText; 

public class LoginActivity extends Activity implements OnClickListener { 

    private String username,password; 
    private Button ok; 
    private EditText editTextUsername,editTextPassword; 
    private CheckBox saveLoginCheckBox; 
    private SharedPreferences loginPreferences; 
    private SharedPreferences.Editor loginPrefsEditor; 
    private Boolean saveLogin; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.login); 

     ok = (Button)findViewById(R.id.buttonLogin); 
     ok.setOnClickListener(this); 
     editTextUsername = (EditText)findViewById(R.id.editTextUsername); 
     editTextPassword = (EditText)findViewById(R.id.editTextPassword); 
     saveLoginCheckBox = (CheckBox)findViewById(R.id.saveLoginCheckBox); 
     loginPreferences = getSharedPreferences("loginPrefs", MODE_PRIVATE); 
     loginPrefsEditor = loginPreferences.edit(); 

     saveLogin = loginPreferences.getBoolean("saveLogin", false); 
     if (saveLogin == true) { 
      editTextUsername.setText(loginPreferences.getString("username", "")); 
      editTextPassword.setText(loginPreferences.getString("password", "")); 
      saveLoginCheckBox.setChecked(true); 
     } 
    } 

    public void onClick(View view) { 
     if (view == ok) { 
      InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(editTextUsername.getWindowToken(), 0); 

      username = editTextUsername.getText().toString(); 
      password = editTextPassword.getText().toString(); 

      if (saveLoginCheckBox.isChecked()) { 
       loginPrefsEditor.putBoolean("saveLogin", true); 
       loginPrefsEditor.putString("username", username); 
       loginPrefsEditor.putString("password", password); 
       loginPrefsEditor.commit(); 
      } else { 
       loginPrefsEditor.clear(); 
       loginPrefsEditor.commit(); 
      } 

      doSomethingElse(); 
     } 
    } 

    public void doSomethingElse() { 
     startActivity(new Intent(LoginActivity.this, MainActivity.class)); 
     LoginActivity.this.finish(); 
    } 
} 

अंत में विधि, doSomethingElse() आपके आवेदन के लिए अगले चरण पर जाने के लिए अपने प्लेसहोल्डर है। मेरी doSomethingElse() विधि बस एक और गतिविधि लोड करता है।

login.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#000" 
    android:padding="10dp" > 

    <EditText 
     android:id="@+id/editTextUsername" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/imageView1" 
     android:hint="Username" 
     android:inputType="textNoSuggestions" 
     android:imeOptions="actionNext" /> 

    <EditText 
     android:id="@+id/editTextPassword" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/editTextUsername" 
     android:hint="Password" 
     android:inputType="textPassword" 
     android:imeOptions="actionDone" /> 

    <CheckBox 
     android:id="@+id/saveLoginCheckBox" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/editTextPassword" 
     android:text="Save Login?" 
     android:textColor="#FFF" /> 

    <Button 
     android:id="@+id/buttonLogin" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/saveLoginCheckBox" 
     android:layout_marginTop="40dp" 
     android:text="Login" /> 

</RelativeLayout> 

महत्वपूर्ण::

यहाँ प्रवेश पृष्ठ के लिए एक बुनियादी xml फ़ाइल है आप की संभावना SharedPreferences में भंडारण से पहले पासवर्ड एन्क्रिप्ट करना चाहते हैं। इसके लिए विवरण इस प्रश्न के दायरे से बाहर हैं, लेकिन यहां वह कोड है जो मैं करता था: http://www.androidsnippets.com/encryptdecrypt-strings। आपको किसी भी तरह की कुंजी स्कीमा के साथ भी आना होगा।

यह कोड एंड्रॉइड 2.1, एसडीके 7 पर परीक्षण किया गया है। मुझे बताएं कि यह आपके लिए कैसे काम करता है।

डेविड

+1

आपकी सभी मदद डेविड के लिए बहुत बहुत धन्यवाद! मुझे समझने में लगभग 40 मिनट लग गए। मुझे वह बिट मिला और अब चल रहा है :) –

+1

पूरी तरह से काम करता है! धन्यवाद .. – TharakaNirmana

+1

मैं बस अपने ऐप के लिए कुछ कोड टक गया, ठीक काम किया! – Bachask8

संबंधित मुद्दे