You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:如何让TextView内容重启App后不消失?

解决SharedPreferences数据重启后消失的问题

嘿,刚接触Android Studio很正常,这个问题其实是新手常踩的小坑——你已经搞定了存数据到SharedPreferences、显示到TextView的步骤,但重启App后没有主动去读取之前保存的数据并重新设置给TextView,所以才会看起来内容“消失”了。下面给你一步步讲怎么修复:

核心逻辑:重启时主动加载保存的数据

App重启后,Activity会重新创建,你的TextView默认是初始状态(比如空文本),所以必须在Activity启动的时机,从SharedPreferences里把之前存的数据读出来,再赋值给TextView。

具体步骤&代码示例

1. 先确认存数据的代码是正确的(没问题可以跳过)

不管用Kotlin还是Java,存数据一定要记得提交修改,不然数据根本没写入文件:

Kotlin 存数据示例:

// 获取SharedPreferences实例,第一个参数是自定义的文件名,第二个是私有模式
val sharedPref = getSharedPreferences("MyAppPrefs", MODE_PRIVATE)
val editor = sharedPref.edit()
// 把用户输入的内容存进去,key用"saved_text"(后面读取要对应这个key)
editor.putString("saved_text", userInputEditText.text.toString())
editor.apply() // 推荐用apply()异步提交,不会阻塞主线程

Java 存数据示例:

SharedPreferences sharedPref = getSharedPreferences("MyAppPrefs", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("saved_text", userInputEditText.getText().toString());
editor.apply();

2. 关键:在Activity启动时读取并显示数据

把读取数据的代码放在onCreate()方法里,这样App一启动就会自动加载之前保存的内容:

Kotlin 读取&显示示例:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    // 找到你的TextView控件(替换成你自己的id)
    val displayTextView = findViewById<TextView>(R.id.your_text_view_id)
    
    // 读取SharedPreferences里的数据
    val sharedPref = getSharedPreferences("MyAppPrefs", MODE_PRIVATE)
    // 第二个参数是默认值:如果没找到对应key的内容,就显示空字符串
    val savedContent = sharedPref.getString("saved_text", "")
    
    // 把读取到的内容设置给TextView
    displayTextView.text = savedContent
}

Java 读取&显示示例:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView displayTextView = findViewById(R.id.your_text_view_id);
    
    SharedPreferences sharedPref = getSharedPreferences("MyAppPrefs", MODE_PRIVATE);
    String savedContent = sharedPref.getString("saved_text", "");
    
    displayTextView.setText(savedContent);
}

3. 新手要避开的几个坑

  • 文件名要完全一致:存和取时用的SharedPreferences文件名(比如上面的"MyAppPrefs")必须一模一样,不然会读错文件拿不到数据。
  • 必须提交修改:存数据时一定要调用apply()或commit(),只写putString()不提交,数据根本不会被保存。
  • 默认值要合理:读取时的默认值(比如空字符串)可以避免TextView显示"null"这种奇怪的内容。

这样修改后,你重启App就能看到之前保存的内容啦!慢慢来,刚上手Android遇到这些小问题很正常,多试几次就熟练了~

内容的提问来源于stack exchange,提问作者Kyle Vince

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 18:57:30