如何在Activity或应用关闭后显示SharedPreferences信息?解决调用display崩溃问题
解决调用display()函数时应用崩溃的问题
看起来你遇到的崩溃大概率是TextView未初始化导致的空指针异常,这是Android开发里非常常见的坑,我来帮你一步步排查和解决:
最可能的原因:mText1未完成初始化
你的display()函数里直接调用了mText1.setText(),但如果在调用display()之前,你还没做这两件事,就会触发NullPointerException:
- 没有调用
setContentView()加载布局 - 没有通过
findViewById()获取到mText1的实例
修正后的onCreate()示例
把代码顺序调整成这样,确保先加载布局、初始化控件,再调用display:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 第一步:加载你的布局文件 setContentView(R.layout.your_activity_layout); // 第二步:初始化TextView,替换成你实际的控件ID mText1 = findViewById(R.id.textview_id); // 第三步:调用display() display(); }
检查保存代码的完整性
你贴的savemMed1()代码没写完,要确保保存SharedPreferences时正确使用了Editor并提交修改,完整的保存代码应该是这样:
public void savemMed1() { SharedPreferences sharedPref = getSharedPreferences("MedInfo", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); // 替换成你要保存的实际文本内容 editor.putString("mText1", "需要保存的用药信息"); // 用apply()异步提交(推荐),或者commit()同步提交 editor.apply(); }
额外的调试技巧
如果还是崩溃,可以给display()加个异常捕获,方便定位问题:
public void display() { try { SharedPreferences sharedPref = getSharedPreferences("MedInfo", Context.MODE_PRIVATE); if (mText1 == null) { Log.e("MedInfo", "mText1还没初始化!"); return; } mText1.setText(sharedPref.getString("mText1", "")); } catch (Exception e) { e.printStackTrace(); Log.e("MedInfo", "display函数出错:" + e.getMessage()); } }
这样调整后,应该就能解决崩溃问题啦~
内容的提问来源于stack exchange,提问作者Corina Holom
相关产品推荐
相关产品推荐

