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
相关产品推荐
相关产品推荐

