添加“记住我”checkbox

我想要一个checkboxbutton记住用户名和密码。 任何人都可以请指导我在正确的方向,如何才能开始?

Solutions Collecting From Web of "添加“记住我”checkbox"

我只是将其构build到我的应用程序中,下面是基本代码和一些解释:

基本上这里的关键是SharedPreferences。 您将设置一个SharedPreferences对象,并在用户input后保存您的用户名和密码。 然后,当他们再次运行应用程序时,首选项将存储其数据,然后重新填充login字段。

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文件:

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> 

重要提示:在将密码存储到SharedPreferences之前,您可能需要encryption密码。 有关详细信息超出了这个问题的范围,但是这里是我用来做这个的代码: http : //www.androidsnippets.com/encryptdecrypt-strings 。 你也必须想出一些关键的模式。

此代码已经在Android 2.1 SDK 7上进行了testing。让我知道它是如何工作的。

大卫