2011-10-09 19 views
7

SharedPreferencesを使用して、アプリケーション内のActivitiesにデータを保存しています。私はこのようにそれへのアクセスを取得:私のSharedPreferencesを扱うようにPreferenceActivityを強制するには?

SharedPreferences mSharedPreferences = getSharedPreferences("MyPrefs", 0); 

ユーザーがそれを介して値を変更することができますので、私はPreferenceActivityを実装しましたが、それは/がないように、「MyPrefs」が、にデータを読み書き起こる:

PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 

私にとっては予期しないことが少しあります。それはPreferenceActivityを私の "MyPrefs"プリファレンスに対応させることが可能ですか?そして、単一のアプリケーション内でいくつかの好みを持つのは何ですか?ありがとうございました。

+1

を働いたこれを読む:http://stackoverflow.com/questions/7045417/android-custom-sharedpreferences-implementation-to-persist-to-database – aromero

答えて

0

私は長い間、あなたがPreferenceActivityを使用して計画されていないとして、大丈夫です。この

のようなそれへのアクセスを取得します。

ユーザーが

おっとを通じて値を変更することができますので、私はPreferenceActivityを実装しました。

また、アクティビティ/サービス/その他ではなく、Applicationを使用する特定の理由がない限り、getApplicationContext()を削除してください。必要なときにApplicationオブジェクトを使用するだけで、必要な理由がわかります。

私の "MyPrefs"環境設定にPreferenceActivityを強制することは可能ですか?

独自のSharedPreferencesファイルを作成する特別な理由がない限り、デフォルトのファイルを使用します。

そして、1つのアプリケーション内で複数の設定を使用するという点は何ですか?

あなたは、再利用可能なライブラリやコンポーネントがSharedPreferences中のものを保存する必要がある場合があります、それはそう台無しホスティングアプリケーションから任意の環境設定をしないよう、独自のファイルがある可能性があります。つまり、複数の環境設定ファイルは通常は必要ありません。

+11

'PreferenceActivity'の' getPreferenceManager() .setSharedPreferencesName() 'はトリックを行う – xverges

4

私はPreferenceManager.getDefaultSharedPreferences(コンテキスト)をどこでも使用することをお勧めします。これは、プリファレンスアクティビティと同じです。しかし、現在の設定に固執する必要がある場合、ハックな解決策(私が知っている唯一の方法)は、getSharedPreferencesをオーバーライドして、必要なものを返すことです。

@Override 
public SharedPreferences getSharedPreferences(String name, int mode) { 
    return super.getSharedPreferences("MyPrefs", mode); 
} 
14

可能かつ単純です。これは私のために

public class SettingsActivity extends PreferenceActivity { 
    @SuppressWarnings("deprecation") 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getPreferenceManager().setSharedPreferencesName("MyPrefs"); 
     //getPreferenceManager().setSharedPreferencesMode(MODE_WORLD_WRITEABLE); 
    addPreferencesFromResource(R.xml.preferences); 
    } 
} 
+0

私のために働いた...ありがとう! – aap

+0

これは正解です。このテクニックは、 'PreferenceFragment'を使用している場合にも有効です –

+0

これは受け入れられる答えです。 – Jay

関連する問題