1

サインインしているユーザーの認証トークンを保存しSharedPreferencesています。サインアウトすると、設定がクリアされます。

private void doSignOut(){
    SharedPreferences pref= getSharedPreferences(Constants.SHARED_PREF_DIR, Context.MODE_PRIVATE);
    Editor editor = pref.edit();
    editor.clear();
    editor.apply();
    boolean isCleared = editor.commit();
    FLog.d("Is Pref cleared = " + isCleared);
    mDbHelper.onUpgrade(mDbHelper.getWritableDatabase(), 0, 0);
    mDbHelper.close();
    Intent intent = new Intent(this, SignInActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
}

そして、私の中で私はSignInActivityチェックしますauthToken

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
    ActionBar actionBar = getSupportActionBar();
    actionBar.hide();
    checkForSignIn();

}

private void checkForSignIn() {
    SharedPreferences pref = getSharedPreferences(Constants.SHARED_PREF_DIR, Context.MODE_PRIVATE);
    String authToken = pref.getString(Constants.SHARED_PREF_AUTH, null);
    if(null == authToken){
         showAnimations();
    } else {
        FLog.d("AuthToken already present " + authToken);
        Intent intent = new Intent(getApplicationContext(), com.ribbon.ribbon.MainNavigationActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
    }
}

問題は、checkForSignIn()authTokenがnull代わりに実際の値を保持していないことです。

サインアウトする前に設定xmlを確認すると、サインアウト後にクリアされている間、値が含まれています。

ここで何が問題になっていますか?私は非常に明白な何かを逃していますか?助けてください。

4

3 に答える 3

1

最後に、私はそれを機能させました。問題は、2つのアクティビティが異なるプロセスにあることでした(MapViewアプリで複数を使用しているため)。さまざまなプロセスでの使用をサポートしていないドキュメントに記載されています。SharedPreferencesだから私は移動SignInActivityし、もう一方は同じメインプロセス内にあり、今ではうまく機能しています。

それは私の側のかなり明白な間違いであり、これで4時間頭を掻かなければなりませんでした。したがって、これは同様の状況の誰かを助けるかもしれません。

于 2012-09-11T09:59:27.457 に答える
0
   Editor editor = pref.edit();
    editor.remove(Constants.SHARED_PREF_AUTH);
editor.commit();

しましょう

于 2012-09-11T09:33:08.080 に答える
0

自分でnullを使用して文字列を設定してみてください。

editor.putString(Constants.SHARED_PREF_AUTH, null);
于 2012-09-11T09:33:13.080 に答える