2016-05-21 9 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 
        } 
       }); 

     } 
} 

私は上記のコードを使用しましたが、期待通りに動作していないようです。
実行中にアプリケーションにクラッシュはなく、logcatには何も表示されません。

私はどこで間違いをしましたか?

+0

のような? –

+1

共有設定を正しく使用していません。あなたはfacebookを介してユーザーのログイン時にusenameでコミットする必要があります。そして、あなたがそれがデフォルト値を含んでいるかどうかを確認し、ログイン画面を表示するだけで、次のアクティビティに進む必要があります。 –

答えて

1

だけで、ログインが成功した結果に1つのブール値に

を設定したユーザー名と文字列を比較しない真にその値を作ります。あなたのスプラッシュスクリーンチェックで

sharePrefObje.putBoolean("isLoginKey",true); 

your_user_name`が含まれているどのような値がこの `` STRING`このよう

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に設定してください。 –

関連する問題