0

共有設定をアクティビティにリンクすることができます:

 Intent intent = getIntent();
 Bundle extras = intent.getExtras();
 if (extras != null) appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,
                                                 AppWidgetManager.INVALID_APPWIDGET_ID);

 if (appWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) finish();

 SharedPreferences pref = getSharedPreferences("Widget"+appWidgetId, 0);

プリファレンスアプリケーションの構成ダイアログで、次の方法で表示されたプリファレンスにアクセスできます。

 getPreferenceScreen().getSharedPreferences();

これらの設定はウィジェットにリンクされていませんが、グローバルです。プリファレンスアクティビティに表示されるプリファレンスをウィジェットに合わせたプリファレンスに変更するにはどうすればよいですか?

共有設定ファイルを手動で設定しようとしました:

  PreferenceManager localPrefs = getPreferenceManager();
  localPrefs.setSharedPreferencesName("GITC_Prefs"); 

これにより、を介して共有設定にアクセスしようとすると、nullポインタ例外が発生します

 PreferenceActivity.getPreferenceScreen();
4

1 に答える 1

3

2つのアクティビティで同じものにアクセスするには、とSharedPreferencesに同じ名前を指定する必要がありPreferencesActivity.getPreferenceManager().setSharedPreferencesName(name)ますActivity.getSharedPreferences(name, 0)。現在、最初のケースでは「Widget」+ appWidgetIdを指定し、2番目のケースでは「GITC_Prefs」を指定しています。

于 2012-04-27T14:41:45.793 に答える