Android开发:如何让TextView内容重启App后不消失?
嘿,刚接触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
相关产品推荐
相关产品推荐

