Mi piacerebbe avere un pulsante Checkbox per ricordare ID utente e password. Qualcuno può guidarmi nella giusta direzione su come iniziare?Aggiungi una casella di controllo "Ricordami"
risposta
Ho appena costruito questo in mia app, ecco il codice di base e qualche spiegazione:
Fondamentalmente la chiave qui è SharedPreferences. Potrai impostare un oggetto SharedPreferences e memorizzare il nome utente e la password dopo che l'utente li ha inseriti. Quindi, quando eseguono nuovamente l'applicazione, le loro preferenze verranno archiviate e quindi ripopolare i campi di accesso.
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();
}
}
Il metodo alla fine, doSomethingElse() è la vostra segnaposto per andare alla fase successiva per l'applicazione. Il mio metodo doSomethingElse() carica semplicemente un'altra attività.
Ecco un file XML di base per la pagina di login:
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>
IMPORTANTE: È probabile che desidera crittografare la password prima di riporla in SharedPreferences. I dettagli per questo sono oltre lo scopo di questa domanda, ma qui è il codice che ho usato per farlo: http://www.androidsnippets.com/encryptdecrypt-strings. Dovrai trovare anche qualche tipo di schema chiave.
Questo codice è stato testato su Android 2.1, SDK 7. Fammi sapere come funziona per voi.
David
Grazie mille per tutto il tuo aiuto David! mi ci sono voluti circa 40 minuti per capire. Ho ottenuto quel bit installato e funzionante ora :) –
Funziona perfettamente! Grazie .. – TharakaNirmana
ho appena preso un po 'di codice per la mia app, ha funzionato bene! – Bachask8
- 1. simple_form casella di controllo Bootstrap
- 2. Controllo predefinito una casella di controllo html
- 3. Come creare la casella di controllo "ricordami" usando la libreria di sessione Codeigniter?
- 4. Aggiungi attributo valore alla casella di controllo ASP.NET
- 5. Dovremmo ritirare la casella di controllo "Ricordami" e iniziare ad assumere?
- 6. casella di controllo generale "sincronizzazione automatica" casella di controllo
- 7. default il controllo di una casella di controllo
- 8. Deselezionare una casella di controllo in ComponentView
- 9. Angular.js richiede almeno una casella di controllo
- 10. Seleziona solo una casella di controllo
- 11. Come deselezionare una casella di controllo html?
- 12. OAuthWebSecurity "Ricordami" per Twitter
- 13. casella di controllo Grails
- 14. Aggiungi un pulsante (o qualsiasi controllo in realtà) a una casella di riepilogo in C# WPF?
- 15. Controllo CheckedListBox - Solo spuntando la casella di controllo quando viene cliccata la casella di controllo attuale
- 16. Controllo casella di controllo pdf con itextsharp
- 17. Controllo casella di controllo per applicazione iOS
- 18. Combinazione casella di controllo WPF
- 19. Pulsante casella di controllo personalizzato
- 20. casella di controllo disattiva jstree
- 21. laravel casella di controllo lama
- 22. Casella di controllo in ExpandableListView
- 23. Come aggiungere Controllo Gravatar di AjaxControlToolkit prima o dopo la casella di controllo nel controllo casella di controllo
- 24. Cambiare l'etichetta di una casella di controllo jQuery Mobile
- 25. Segno di spunta in una casella di controllo
- 26. jQuery selector per l'etichetta di una casella di controllo
- 27. Ottieni l'ID di una casella di controllo? - jQuery
- 28. jQuery - Creazione di un'immagine Toggle per una casella di controllo
- 29. Ottenere il valore CURRENT di una casella di controllo onclick
- 30. evento onCheckedChanged di casella di controllo all'interno di un GridView
Hai già creato la funzione di accesso completo tranne la funzionalità "Ricordami"? – WarrenFaith