java - 使用设置活动中的条目
问题描述
我对 Android 开发还比较陌生,所以请不要反对我。我的问题是我为我的程序创建了一个偏好活动,但不知道如何访问它,以便其他活动从启动时使用/存储这些值。此外,在默认设置活动中,我没有带箭头的工具栏,可以让我回到第一个活动。我在后箭头上尝试了很多,但不知何故没有任何帮助。非常感谢。
设置-活动:
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);
}
}
}
解决方案
首先向您的片段添加一个空的构造函数:
public SettingsFragment() {
}
您的设置活动需要开始监听更改:
@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();
}
}
推荐阅读
- python - python中异构可变长度元组的类型提示是什么?
- python - ValueError:字符串长度不等于格式和分辨率大小
- reactjs - 具有 2 种不同 UI 结构的 Next.js 多语言应用程序
- flutter - 如何在 Flutter 中制作这个我是 Flutter 的新手,所以如果有人知道
- firebase - 使用 gofiber firebase-auth 时获取“丢失或格式错误的令牌”
- c++ - C++,C++ 的 OpenCv 给出了错误,尽管它是正确构建的
- android - 如何检查与查尔斯的连接方法请求?
- ajax - JSF ajax - 重置延迟
- php - 如何检查是否启用了 JIT?
- flutter - 如何加密/解密列表
飘飘然