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

QR Code扫码结果无法在新Activity中显示,寻求技术解决方案

问题原因及解决办法

你的问题出在启动新Activity后立刻操作静态TextView:

  • 调用startActivity后,ResultActivity的onCreate方法还没执行,scanText2还是null,直接调用setText会触发空指针异常,就算没崩溃,也无法把结果显示出来。
  • 用静态变量持有控件的写法本身就不规范,容易导致内存泄漏和不可预期的bug。

正确的实现方式:通过Intent传递数据

1. 修改scanner.java中的handleResult方法

把扫描结果通过Intent的Extra传递给ResultActivity:

@Override
public void handleResult(Result rawResult) {
    Intent intent = new Intent(getApplicationContext(), ResultActivity.class);
    // 把扫描结果存入Intent
    intent.putExtra("SCAN_RESULT", rawResult.getText());
    startActivity(intent);
    onBackPressed();
}

2. 修改ResultActivity代码

去掉静态TextView,在onCreate中从Intent取出数据并设置:

public class ResultActivity extends AppCompatActivity {
    private TextView scanText2;

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

        scanText2 = findViewById(R.id.scanText2);
        // 从Intent中获取扫描结果
        String scanResult = getIntent().getStringExtra("SCAN_RESULT");
        if (scanResult != null) {
            scanText2.setText(scanResult);
        }
    }
}

这样修改后,就能正常在新Activity中展示扫描结果了,同时避免了静态变量带来的潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:06:47