网站建设项目结构分析,wordpress小工具推荐,中山网站建设备案,沈阳网站建设公司哪家好如果你需要一个简单的APP设置#xff0c;可以使用sharedPreferences进行存储#xff0c;我们可以借助AndroidStudio快速创建一个用于设置的Activity#xff0c;其实它是继承PreferenceFragmentCompat#xff0c;存储方式用的就是sharedPreferences#xff0c;只是帮我们节…如果你需要一个简单的APP设置可以使用sharedPreferences进行存储我们可以借助AndroidStudio快速创建一个用于设置的Activity其实它是继承PreferenceFragmentCompat存储方式用的就是sharedPreferences只是帮我们节省了很多操作
1.新建SettingsActivity
使用AS新建一个SettingsActivity 可以发现它自动生成了一个Activity、一个layout布局和一个xml文件 layout文件很简单里面就是一个LinearLayout里套FrameLayout我们不用去修改它 xml文件是使用PreferenceScreen的布局文件在自动生成Activity文件里的SettingsFragment类引用该xml 2.xml 它默认生成的是root_preferences.xml里面是PreferenceScreen布局关于PreferenceScreen 的布局大家可以去网上搜一下或者去官网看看说明我这里只是简单举个例子
title显示的标题 key存储的键sharedPreferences取值需要用 dependency是否依赖某个组件被依赖组件启用则当前组件启用 icon图标 summary描述 fragment嵌套fragment多级页面 useSimpleSummaryProvider是否显示值内容 3.Activity监听校验
如果修改了设置可以进行保存我们需要实现Preference.OnPreferenceChangeListener才能监听改变比如说校验输入值的合法性 public class SettingsActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.settings_activity);if (savedInstanceState null) {getSupportFragmentManager().beginTransaction().replace(R.id.settings, new SettingsFragment()).commit();}ActionBar actionBar getSupportActionBar();if (actionBar ! null) {actionBar.setTitle(设置);actionBar.setDisplayHomeAsUpEnabled(true);}}// 点击返回图标事件Overridepublic boolean onOptionsItemSelected(MenuItem item) {if (item.getItemId() android.R.id.home) {this.finish();}return super.onOptionsItemSelected(item);}// 接口Preference.OnPreferenceChangeListenerpublic static class SettingsFragment extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {Overridepublic void onCreatePreferences(Bundle savedInstanceState, String rootKey) {setPreferencesFromResource(R.xml.root_preferences, rootKey);// 通过xml设置的key找到要监听的项Preference sPEditUsername findPreference(username);Preference sPEditPassword findPreference(password);// 设置监听if (sPEditUsername ! null) {sPEditUsername.setOnPreferenceChangeListener(this);}if (sPEditPassword ! null) {sPEditPassword.setOnPreferenceChangeListener(this);}}// 值发生改变时触发return值决定是否保存修改true保存false不保存Overridepublic boolean onPreferenceChange(Preference preference, Object newValue) {String key preference.getKey();if (key.equals(username)) {...return true; // 保存} else if (key.equals(password)) {...return true;}return false; //不保存}
}采用的是sharedPreferences的存储方式所以取值还是很简单的
SharedPreferences sharedPreferences PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
boolean spIsAuth sharedPreferences.getBoolean(is_auth, false); // 第一个参数是key第二个是根据key取不到值时的默认值
String spUsername sharedPreferences.getString(username, );
String spPassword sharedPreferences.getString(password, );