2013-07-06 6 views
0

Я создаю приложение для Android, для которого я создал логин и страницы регистрации. Я хочу реализовать функцию «сохранить меня вошедшей в систему» ​​на странице входа. Я думаю, что знаю, что делать, но почти все, что я пытаюсь сделать, это ошибка.Запомнить меня CheckBox Android

Мне нужно сохранить состояние флажка в SharedPreference, а затем использовать его с инструкцией if else, если он проверен, он пропустит операцию входа и начнет основное действие, иначе будет действовать активность входа.

Было бы полезно, если бы кто-то мог предоставить образец кода.

ChechBox keeplog = (CheckBox)findBiewById(R.Id.checkbox1) 

Как я могу сохранить состояние проверки в общей Preference и как принести его состояние в виде булева или строки, так что он может быть использован с, если-иначе заявления?

+0

http://www.androidhive.info/2012/08/android-session-management-using-shared-preferences/ – GoodSp33d

+0

Я не хочу создавать сеанс, я просто хочу сохранить состояние флажка в sharedPreference. –

ответ

2

Пробудись следующим образом, объявите одну логическую переменную.

CheckBox keeplog = (CheckBox) findViewById(R.id.checkBox1); 
boolean isChecked = false; 

Затем сохранить состояние флажка в общих настройках с CheckedChangeListener.

keeplog.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     SharedPreferences settings = getSharedPreferences("PREFS_NAME", 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putBoolean("isChecked", isChecked); 
     editor.commit(); 
    } 
});  

Тогда теперь получить состояние флажка из SharedPreferences используя следующий способ.

SharedPreferences settings1 = getSharedPreferences("PREFS_NAME", 0); 
isChecked = settings1.getBoolean("isChecked", false); 

Теперь проверьте с, если заявление и начать деятельность как следующий

if (isChecked) { 
    Intent i = new Intent(MainActivity.this, ThirdActivity.class); 
    startActivity(i); 
} else { 
    Intent i = new Intent(MainActivity.this, SecondActivity.class); 
    startActivity(i); 
} 

Спасибо.

+0

Удивительный! Именно то, что я хотел, спасибо! –

+0

Добро пожаловать :) – Gunaseelan

1

Попробуйте следующее: я вставил код о подключении & к серверу ejabberd, так как без него код выглядел неполным для меня. Я добавил комментарии для объяснения того, как хранить & для получения значений в SharedPrefernces.

public class Login extends Activity 
{ 
private XMPPConnection connection; 
private ProgressBar progressBar; 
private EditText userId; 
private EditText password; 
private CheckBox rememberMe; 
private SharedPreferences sharedPreferences; 
private Editor editor; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 
    userId = (EditText) findViewById(R.id.user_id); 
    password = (EditText) findViewById(R.id.password); 
    rememberMe = (CheckBox) findViewById(R.id.remember_me); 
    progressBar = (ProgressBar) findViewById(R.id.login_progress); 
       //Retrieving SharedPreferences 
    sharedPreferences = this.getPreferences(Context.MODE_PRIVATE); 
       //Retrieving editor 
    editor = sharedPreferences.edit(); 
       //Retrieving remember me checkbox's set value which if was stored in SharedPreferences 
    if(sharedPreferences.getBoolean(getString(R.string.remember_me), false)) 
    { 
     String uId, pass; 
     uId = sharedPreferences.getString(getString(R.string.user_id), ""); 
     pass = sharedPreferences.getString(getString(R.string.password), ""); 
     userId.setText(uId); 
     password.setText(pass); 
     rememberMe.setChecked(sharedPreferences.getBoolean(getString(R.string.remember_me), false)); 
     new Connection().execute(uId, pass); 
    } 
} 

public void login(View view) 
{ 
    new Connection().execute(userId.getText().toString(), password.getText().toString()); 
} 

private class Connection extends AsyncTask<String, Void, Integer> 
{ 
    private static final int CONNECTION_FAILURE = 0; 
    private static final int LOGIN_FAILURE = 1; 
    private static final int SUCCESS = 2; 

    protected void onPreExecute() 
    { 
     progressBar.setVisibility(ProgressBar.VISIBLE); 
    } 

    protected Integer doInBackground(String... strings) 
    { 
     ConnectionConfiguration conConfig = new ConnectionConfiguration("192.168.1.66", 5222, "domain"); 
     connection = new XMPPConnection(conConfig); 
     try 
     { 
      connection.connect(); 
      Log.i("TESTING", "CONNECTED TO " + connection.getHost()); 
     } 
     catch(Exception e) 
     { 
      Log.e("TESTING", e.getMessage()); 
      return CONNECTION_FAILURE; 
     } 
     try 
     { 
      connection.login(strings[0], strings[1]); 
      Log.i("TESTING", "LOGGED IN AS " + connection.getUser()); 
      Presence presence = new Presence(Presence.Type.available); 
      connection.sendPacket(presence); 
     } 
     catch(Exception e) 
     { 
      Log.e("TESTING", e.getMessage()); 
      return LOGIN_FAILURE; 
     } 
     return SUCCESS; 
    } 

    protected void onPostExecute(Integer integer) 
    { 
     progressBar.setVisibility(ProgressBar.GONE); 
     switch(integer) 
     { 
      case CONNECTION_FAILURE: 
       Toast.makeText(getApplicationContext(), "Failed to connect to the server.", Toast.LENGTH_LONG).show(); 
       break; 
      case LOGIN_FAILURE: 
       Toast.makeText(getApplicationContext(), "Please check your user id and or password.", Toast.LENGTH_LONG).show(); 
       break; 
      case SUCCESS: 
       if(rememberMe.isChecked()) 
       { 
                 //Setting value in SharedPrefernces using editor. 
        editor.putBoolean(getString(R.string.remember_me), rememberMe.isChecked()); 
        editor.putString(getString(R.string.user_id), userId.getText().toString()); 
        editor.putString(getString(R.string.password), password.getText().toString()); 
                 //Committing the changes. 
        editor.commit(); 
       } 
       else 
                 //Clearing SharedPreferences. 
        sharedPreferences.edit().clear().commit(); 
       startActivity(new Intent(getApplicationContext(), Home.class)); 

     } 
    } 
} 
} 
+0

Добро пожаловать. –

+0

Хотя это довольно старый пост, я хотел бы упомянуть, что считается неправильной практикой хранить имя пользователя и пароль в общих предпочтениях, поскольку это недостаточно безопасно. – Zanser1609

Смежные вопросы