2016-11-29 2 views
0

私はAndroidStudioによって作成されたSettingsActivityを使用しています(AppCompatPreferenceActivityを拡張し、PreferenceActivityを拡張しています)。私の設定値は、DefaultSharedPreferences(pkg-name_preferences.xml)に保存されています。テストスイートはDefaultSharedPreferencesを上書きしません

テストスイートの実行時に、DefaultSharedPreferenceファイルに別の名前を指定したいと考えています。これにより、テストスイートがアプリケーションの通常の使用中に設定した可能性のある設定値を上書きするのを防ぐことができます。

これは可能ですか? (ただ、明確にするために:私はテストスイートが実行されているかどうかを検出することが可能ですが、私はDefaultSharedPreferencesの名前を指定する方法がわからない)

は私が提案し、いくつかの古い記事を見つけました:

PreferenceManager prefMngr = getPreferenceManager(); 
prefMngr.setSharedPreferencesName("my_name"); 

API11でgetPreferenceManager()が使用されなくなりました。使用すると、nullが返されます。

多分私の目的(テストスイートはアプリケーションの嗜好値を上書きしない)を達成するための他の方法がありますか?

答えて

0

私はそれを理解しました。

ボイラープレートSettingsActivityには、各サンプル設定グループ(たとえば、GeneralPreferenceFragment)の内部クラスが含まれます。これらのクラスは、PreferenceFragmentを拡張します。

IはPreferenceFragmentを拡張し、設定ファイルの名前を指定するクラスを追加した:

/** 
* This (abstract) fragment is a super-class for the category-specific fragments. 
* It sets the shared preferences file name. 
*/ 
@TargetApi(Build.VERSION_CODES.HONEYCOMB) 
abstract private static class MyPreferenceFragment extends PreferenceFragment { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // set the shared preferences file name 
     getPreferenceManager().setSharedPreferencesName("my file name"); 
    } 
} 

私はむしろPreferenceFragmentより、MyPreferenceFragmentを拡張するGeneralPreferenceFragment(2他の内部クラス)に変更。

関連する問題