2016-09-13 3 views
-2

私は主なアクティビティと設定アクティビティを持っています。設定アクティビティクラスは、メニュー項目の[設定]をクリックするとインテントで発生します。今、私は、デフォルト値が設定で設定されていることを確認したいので、MainActivityのonCreate内で次のコードを呼び出します。しかし、主な活動コンテキストがsetDefaultValuesメソッドによって取得されないというエラーがあります。私はそれが設定活動の文脈に必要と思う。どのようにしてMainActivityから正しいコンテキストを渡すことができますか?言い換えれば、私は主な活動onCreateメソッドからこれの代わりに何を置くべきですか?別のクラスから別のクラスのコンテキストを設定する方法は?

PreferenceManager.setDefaultValues(this, R.xml.preferences, false); 

UPDATE:次のように

私の主な活動は、になります。ここで重要な部分は、私はこの部分でエラーを取得していますsetDefaultValuesです。 「これ」は受け入れられません。私がSettingsFragmentまたはSettingsActivityクラスの中でデフォルト値を設定すると、それは正常に動作し、MainActivityではなくSettingsActivityのコンテキストを渡す必要があるように見えます。助けてください!ありがとう!

public class MainActivity extends AppCompatActivity { 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     PreferenceManager.setDefaultValues(this, R.xml.preferences, false); 


    } 

私はこれは私がすべての助けに感謝

enter image description here

を取得していますエラーで設定

public class SettingsActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_settings); 

     getFragmentManager().beginTransaction().add(R.id.fragment_container, new SettingsFragment()).commit(); 
    } 


    public static class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener{ 

に異なる作用を持っています!ありがとう!

+2

「設定アクティビティのコンテキストにする必要があると思います。これは間違っています。どんなコンテキストでも問題ありません。 – F43nd1r

+0

あなたの考えを記述するコードを提供してください – Vyacheslav

+0

このコードはどのスレッドからでも呼び出す必要があります。あなたがしていないことを確認し、行う場合は、 'MainActivity.this'代わりに 'これ' –

答えて

1

は、アプリケーションコンテキストを使用し、値を別の名前の選出者に保存します。

0

ok PreferenceFragmentを作成する前にデフォルト値を設定できないため、PreferenceFragmentが作成されたときに値が初期化されるという意味があるので、PreferenceFragmentのonCreateメソッドのデフォルト値の設定に頼っただけです。

関連する問題