これはあなたが求めているものとは正確に一致しないかもしれませんが、私がしていることは次のとおりです。
メインアクティビティでは、設定アクティビティを呼び出すときに、カスタム設定ファイルの名前をインテントの追加データとして渡します。
static final String EXTRA_PREFERENCES_NAME = "android.intent.extra.PREFERENCES_NAME";
...
Intent intent = new Intent(this, Preferences.class);
intent.putExtra(EXTRA_PREFERENCES_NAME, preferencesName);
startActivity(intent);
次に、設定アクティビティで、カスタム設定名を取得し、次のように設定します。
public class Preferences extends PreferenceActivity {
private String preferencesName = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// get the custom preferences name from the extra data in the intent
preferencesName = getIntent().getExtras().getString(MainActivity.EXTRA_PREFERENCES_NAME);
// set the preferences file name
getPreferenceManager().setSharedPreferencesName(preferencesName);
// get the default preferences from XML
addPreferencesFromResource(R.xml.preferences);
}
最後に、私のメインアクティビティでは、次のような特定の設定を取得します。
SharedPreferences preferences = getSharedPreferences(preferencesName, MODE_PRIVATE);
String somePreference = preferences.getString("somePreference", defaultValue);