0

アプリケーションを使用して、2 つ以上のアプリケーションから同じ設定を読み取りたいです。

最初の application( ) は、共有設定にcom.ex.sp1文字列を書き込みます。No.1myPref

Context context = getApplicationContext();
SharedPreferences preferences = context.getSharedPreferences("myPref", Context.MODE_WORLD_READABLE);
preferences.edit().putString("name", "No.1").commit();

2 番目の application( ) は、共有設定にcom.ex.sp2文字列を書き込みます。No.2myPref

Context context = getApplicationContext();
SharedPreferences preferences = context.getSharedPreferences("myPref", Context.MODE_WORLD_READABLE);
preferences.edit().putString("name", "No.2").commit();

3 番目のアプリケーションは、1 と 2 から設定を取得し、アクティビティに関する文字列を表示します。

TextView myText = (TextView) findViewById(R.id.mytext);

Context sp1Context = createPackageContext("com.ex.sp1", Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences preferences = sp1Context.getSharedPreferences("myPref", Context.MODE_WORLD_READABLE | Context.MODE_MULTI_PROCESS);
String sp1Text = preferences.getString("name", "Orz");

Context sp2Context = createPackageContext("com.ex.sp2", Context.CONTEXT_IGNORE_SECURITY);
preferences = sp2Context.getSharedPreferences("myPref", Context.MODE_WORLD_READABLE | Context.MODE_MULTI_PROCESS);
String sp2Text = preferences.getString("name", "Orz");
myText.setText(sp1Text + "   " + sp2Text);

予期される文字列は であるはずですNo.1 No.2が、結果はNo.1 No.1です。

プリファレンス ファイル名をmyPref1 myPref2... のように別の名前に変更すると、正しい結果が得られます。

どなたか同じ経験をお持ちの方、または解決策をお持ちの方はいらっしゃいますか? ありがとう!

4

1 に答える 1

0

別の SharedPreferences オブジェクトで 2 番目の sharedpreferences を宣言してみてください。上書きされていない可能性があります。

于 2013-10-25T13:01:01.010 に答える