如何使用SharedPreferences保存EditText设置的Button文本并在重启读取
实现步骤
1. 补充全局变量声明
首先修正原有代码的语法错误,同时新增SharedPreferences相关常量和实例:
public class MainActivity extends AppCompatActivity { // SharedPreferences配置常量 private static final String SP_FILE_NAME = "app_config"; private static final String KEY_BTN_TEXT = "custom_button_name"; private SharedPreferences mSp; private Button button; private EditText editText1;
2. onCreate中读取已存储的按钮文本
初始化SharedPreferences后直接读取存储值,设置给按钮即可实现重启恢复效果:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化SharedPreferences,MODE_PRIVATE表示仅本应用可读写 mSp = getSharedPreferences(SP_FILE_NAME, MODE_PRIVATE); button = findViewById(R.id.button3); // 读取存储的按钮文本,第二个参数为读取失败时的默认值,可自行修改 String savedText = mSp.getString(KEY_BTN_TEXT, "默认按钮"); button.setText(savedText); button.setOnClickListener(v -> opensecondone()); button.setOnLongClickListener(v -> naming()); editText1 = findViewById(R.id.tv_textView); }
3. 修改naming方法,新增存储逻辑
修改长按触发的命名方法,设置按钮文本的同时将值存入SharedPreferences:
public boolean naming() { String inputContent = editText1.getText().toString().trim(); // 可选:增加非空判断,避免空输入覆盖原有按钮名 if (!inputContent.isEmpty()) { button.setText(inputContent); // 存入SharedPreferences SharedPreferences.Editor editor = mSp.edit(); editor.putString(KEY_BTN_TEXT, inputContent); editor.apply(); // 异步提交,无返回值不阻塞主线程,如需确认存储结果可替换为commit() } // 清空输入框 editText1.setText(""); return true; }
原有方法保留即可
public void opensecondone() { Intent intent = new Intent(this, firmaeins.class); startActivity(intent); } }
注意事项
- 原有代码中
MainActivity<button1>的错误泛型声明需删除 - 成员变量声明末尾需补全分号,修复语法错误
- 如果需要支持多按钮存储,只需新增不同的KEY常量区分存储即可
内容的提问来源于stack exchange,提问作者DrlSoldberg
相关产品推荐
相关产品推荐

