我有一项主要活动和一项设置活动。单击菜单项“设置”时,将通过意图触发设置活动类。现在,我想确保在首选项中设置默认值,因此在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{
这是我得到的错误
我感谢任何帮助!谢谢!
答案 0 :(得分:1)
使用应用程序上下文并将值保存到具有不同名称的首选项中。
答案 1 :(得分:0)
好吧我只是在PreferenceFragment的onCreate方法中设置了默认值,因为在创建PreferenceFragment时初始化值是有意义的,因此我无法在创建PreferenceFragment之前设置默认值。