Установите флажок «Запомнить меня»

Я хотел бы иметь кнопку флажка, чтобы помнить идентификатор пользователя и пароль. Может ли кто-нибудь направить меня в правильном направлении, как начать?

Solutions Collecting From Web of "Установите флажок «Запомнить меня»"

Я только что построил это в своем приложении, вот базовый код и некоторое объяснение:

В основном ключевым здесь является SharedPreferences. Вы настроите объект SharedPreferences и сохраните свое имя пользователя и пароль после того, как пользователь ввел их. Затем, когда они снова запустит приложение, настройки сохранят свои данные и затем повторно заполнят поля входа.

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 () просто загружает другое действие.

Вот базовый 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. Подробности для этого выходят за рамки этого вопроса, но вот код, который я использовал для этого: http://www.androidsnippets.com/encryptdecrypt-strings . Вам также придется придумать какую-то ключевую схему.

Этот код был протестирован на Android 2.1, SDK 7. Дайте мне знать, как он работает для вас.

Дэвид