2016-05-21 2 views
0

Я пытаюсь использовать SharedPreferences для пропуска входа в систему. Активность: если логин уже выполнен, SharedPreferences будет хранить имя пользователя, и логин будет проходить второй раз, не пропуская логин Мероприятия.SharedPreferences, чтобы избежать экрана входа в систему после первого входа в систему

CallbackManager mcallbackManager; 
private SharedPreferences mPreferences; 
private String your_user_name; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    mPreferences = getSharedPreferences("User", MODE_PRIVATE); 
    SharedPreferences.Editor editor = mPreferences.edit(); 
    editor.putString("username", your_user_name); 
    editor.commit(); 

    if (mPreferences.contains("username")) { 
     Intent intent = new Intent(MainActivity.this, getMyLocation.class); 
     startActivity(intent); 
    }else { 

     FacebookSdk.sdkInitialize(this.getApplicationContext()); 
     setContentView(R.layout.activity_main); 

     mcallbackManager = CallbackManager.Factory.create(); 


     LoginManager.getInstance().registerCallback(mcallbackManager, 
       new FacebookCallback<LoginResult>() { 
        @Override 
        public void onSuccess(LoginResult loginResult) { 
         Intent intent = new Intent(MainActivity.this, getMyLocation.class); 
         startActivity(intent); 
        } 

        @Override 
        public void onCancel() { 

        } 

        @Override 
        public void onError(FacebookException exception) { 
         // App code 
        } 
       }); 

     } 
} 

Я использовал приведенный выше код, но он не работает должным образом.
Во время работы нет сбоя в приложении, и ничего не отображается в логарифме.

Я не знаю, где я совершил ошибку.

+0

Какое значение это '' String' your_user_name' содержит? –

+1

Вы не использовали Shared preference правильно. Вы должны совершать с именем пользователя при входе пользователя через facebook. И onCreate вам просто нужно проверить, содержит ли оно значение по умолчанию, а затем отобразить экран входа в систему, а затем перейти к следующей операции. –

ответ

1

не сравнить строку с именем пользователя просто установить одно логическое значение

на успех результата логина сделать это значение верно.

sharePrefObje.putBoolean("isLoginKey",true); 

на ваш всплеск проверки экрана, как этот путь

if (getSharedPreferences("PREFERENCENAME",0).getBoolean("isLoginKey",false)){ 
       Intent i = new Intent(SplashActivity.this, MainActivity.class); 
       startActivity(i); 
       finish(); 
      }else{ 
       Intent i = new Intent(SplashActivity.this, LoginActivity.class); 
       startActivity(i); 
       finish(); 
      } 
+0

Прошу прощения, я не могу понять, что вы говорите, что вы можете изменить код, который я предоставил. – Eggsy

+0

public void onSuccess (LoginResult loginResult) { Цель намерения = новое намерение (MainActivity.this, getMyLocation.class); startActivity (намерение); } –

+0

Установите переменную isLogin в true, чтобы вы могли это сделать., –

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