我对 Android 开发还比较陌生,所以请不要反对我。我的问题是,我已经为我的程序创建了一个首选项 Activity ,但不知道如何访问它,以便其他 Activity 从启动时使用/存储这些值。此外,在默认设置 Activity 中,我没有带有箭头的工具栏可以带我返回第一个 Activity 。我在后退箭头上尝试了很多,但不知何故没有任何帮助。非常感谢。
设置- Activity :
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);
}
}
public static class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.root_preferences, rootKey);
}
}
}
最佳答案
首先向 fragment 添加一个空构造函数:
public SettingsFragment() {
}
您的设置 Activity 需要开始监听更改:
@Override
public void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener( this );
}
@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
您还可以调用 onSharedPreferenceChanged
作为您的首选项的监听器:
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if( key.equalsIgnoreCase( "key1") ) {
// example use
ListPreference lp = (ListPreference) findPreference( key );
lp.setTitle( lp.getEntry() );
SettingsActivity.FONT_STYLE = lp.getValue();
}
else if( key.equalsIgnoreCase( "key2") ) {
// example use
ListPreference lp = (ListPreference) findPreference( key );
lp.setTitle( lp.getEntry() );
SettingsActivity.FONT_SIZE = lp.getValue();
}
}
关于java - 使用设置 Activity 中的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58396478/