2017-10-18 12 views
1

共有設定からブール値を読み込もうとしています。最初の起動時には、Shared Preferencesに保存したことがないので、TRUEにする必要があります。しかし、私は何とか間違っています。共有設定が正しく取得されていません

以下のコードを参照してください。

settings = context.getSharedPreferences(SAVED_PREFERENCES, 0); 
isFirstLaunch = settings.getBoolean(FIRST_LAUNCH, true); 
Log.d(TAG, "loadIsFirstLaunch: " + isFirstLaunch); 

p.s.共有設定で100%より前にFIRST_LAUNCHの値を保存していません。

UPD1私は空のプロジェクトをダブルチェックしました - コードが正しく動作しています。共有プリファレンスは、booleanプリミティブ型ではなくブールクラスを使用します。したがって、デフォルトではbooleanはfalseではありません。また、デバッグによれば、私の共有設定には、起動時にFIRST_LAUNCHの値が何らかの形で含まれています。それで、どうやってそこに着きましたか。

UPD2私はついに詰まりました。 FirstLaunchのすべての言及を削除しましたが、他の値を読み込むための別の呼び出しが行われたときにSharedPreferencesに何らかの形で現れます。だから質問は - どのように私は共有の設定で保存された値を取り除くことができますです。 http://take.ms/Rr0Xf

UPD3保存された設定ファイルに名前が変更されました。問題は、アプリケーションのクリーンインストール後にも、保存された環境設定の情報を保持しているSOMEHOWデバイスでした。 PFM。

+0

は、プリファレンスデータの挿入と読み取りのための完全なコードを共有します。 –

+1

デフォルト値はtrueでなければなりません。 –

+1

十分なソースコードの問題に関する十分な情報を提供するまで、誰も助けてくれません。 –

答えて

0

から値を取得するために必要なものだから、最終的に私は、問題と解決策を見つけました。

アンドロイドM以上のバージョンでは、GoogleはGoogleドライブにアプリケーションのバックアップを保存しています。そのため、共有環境設定を再インストールしても復元されています。私はバックアップを無効にしました。

アプリケーションセクションの下にプロジェクトマニフェストファイルがあります。アンドロイド:allowBackup = "true"をfalseに設定します。

+0

これは本当にひどい特徴です。 – greenapps

1

ポイントが少ないため、あなたの質問にコミットできません。したがって、FIRST_LAUNCHに値を設定していないことを確かめている場合は、1.アプリのデータを消去してみてください。2.完全なソースコード

し、複数のsharedpreferences

1

そのがある場合は、デフォルトではブール値がfalseにその値を設定しているため、空の値はそこから返されたとき...それが唯一の真の値を取るもの@miller共有プリファレンスが、ブール値はtrueまたはfalseのいずれかの値を持たなければなりません。ヌル値をサポートしません。

はそうあなたがプログラム的にロードする前に、クラスでtrueにセッションのブール値を設定して行い、その後、セッション

+0

ここで大きなナンセンス。 – greenapps

関連する問題