如何设置来自不同类的另一个类的上下文?

时间:2016-09-13 07:07:58

标签: android preferences

我有一项主要活动和一项设置活动。单击菜单项“设置”时,将通过意图触发设置活动类。现在,我想确保在首选项中设置默认值,因此在onCreate for MainActivity中我调用以下代码。但错误是setDefaultValues方法不采用mainactivity上下文。我认为它需要上下文设置活动。我如何从MainActivity传递正确的上下文。换句话说,我应该从主要活动onCreate方法而不是这个。

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

更新:

我的主要活动看起来如下:这里重要的部分是setDefaultValues,我在这部分得到错误。 "这"那里是不可接受的。当我在SettingsFragment或SettingsActivity类中设置默认值时,它工作正常,所以看起来我需要传递SettingsActivity的上下文而不是MainActivity。请帮忙!谢谢!

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);


    }

我对设置有不同的活动

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{

这是我得到的错误

enter image description here

我感谢任何帮助!谢谢!

2 个答案:

答案 0 :(得分:1)

使用应用程序上下文并将值保存到具有不同名称的首选项中。

答案 1 :(得分:0)

好吧我只是在PreferenceFragment的onCreate方法中设置了默认值,因为在创建PreferenceFragment时初始化值是有意义的,因此我无法在创建PreferenceFragment之前设置默认值。