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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:36:04