我想在模拟器中关闭switchpreference,但当我按下时,它将保持在“on”状态。我放了一个onchangelistener,所以当有更改时,我可以更改另一个类中的值。我也在我的智能手机上测试了它,但当我按下时,它会保持在sampe“开”的位置。这是我的设置活动代码
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_activity);
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.settings, new SettingsFragment())
.commit();
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
NavUtils.navigateUpFromSameTask(this);
}
return super.onOptionsItemSelected(item);
}
public static class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.root_preferences, rootKey);
SharedPreferences abcd = PreferenceManager.getDefaultSharedPreferences(getContext());
boolean checkzent = abcd.getBoolean("zentriert", false);
if(checkzent)
{
MapsActivity.zentriertmap = true;
}
else
{
MapsActivity.zentriertmap = false;
}
SwitchPreferenceCompat check = (SwitchPreferenceCompat) findPreference("zentriert");
check.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object obj) {
boolean yes = (boolean) obj;
if(yes)
{
MapsActivity.zentriertmap = true;
}
else
{
MapsActivity.zentriertmap = false;
}
return false;
}
});
}
}
}
这是我的xml文件:
<PreferenceScreen
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory
app:title="Karte">
<SwitchPreferenceCompat
app:key="zentriert"
app:title="Karten Zentrierung"
app:defaultValue="true"
/>
<SeekBarPreference
app:key ="seekbar"
app:defaultValue="16"
app:min="2"
app:title="Karte Zoomlevel" />
</PreferenceCategory>
</PreferenceScreen>
暂无答案!
目前还没有任何答案,快来回答吧!