6

私のアプリには、Androidバージョン4.2以降を必要とする機能がいくつかあります。したがって、私のメインアクティビティでは、使用可能なOS機能を確認し、で定義されている設定項目を変更(有効化/無効化)する必要がありますPreferenceActivity

次のコードは、外部から到達できませんPreferenceActivity

ListPreference prefReport = (ListPreference)getPreferenceScreen().findPreference("pref_report");
prefDspProfile.setValue("0");

だから私の質問は、PreferenceActivityの外部から設定アイテムを変更する方法です。

4

1 に答える 1

2

PreferenceAcitivityを暗黙的に使用する場合は、SharedPreferenceファイルを使用しています。したがって、PreferenceAcitivityの外部で、SharedPrefenceファイルにアクセスして変更することができます。間もなく、これらの変更はPreferenceActivityに反映されます。

SharedPreferenceにアクセスするには、コンテキストが必要です。たとえば、他のsimpleAcitivityのonCreateメソッドを楽しみにしています。

更新: このアプローチを使用すると、アイテムを有効/無効にすることはできません。それらの値を変更または削除できます

@Override
protected void onCreate(Bundle state){
   super.onCreate(state);

   // Restore preferences
   SharedPreferences settings = getPreferences(MODE);
   // Make sure we're running on Honeycomb or higher to use ActionBar APIs
   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
      //change your setting here
      // We need an Editor object to make preference changes.
      // All objects are from android.context.Context
      SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
      SharedPreferences.Editor editor = settings.edit();
      editor.putBoolean("silentMode", mSilentMode);

      // Commit the edits!
      editor.commit();
   }

}

他の方法で、私の意見では、より良く、より簡単に代替リソースを提供することです。リソース修飾子を使用して、Android APIレベルに応じて、アプリの設定を定義する多くのxmlファイルを提供できます。例:v2、v17。

 res-v4
     setting.xml

 res-v17
     setting.xml -> This file can include specific Jelly Beans configs  
于 2013-03-06T16:09:37.103 に答える