二维码扫描程序的值无法在新活动中显示



我正在尝试制作一个简单的二维码扫描仪,如果结果显示在MainActivity中,它就会运行良好。但是,当我尝试生成新的"活动"时,它无法显示。你愿意帮我解决这个问题吗?非常感谢。

以下是scanner.java中扫描仪代码的结果:

@Override
public void handleResult(Result rawResult) {
startActivity(new Intent(getApplicationContext(),ResultActivity.class));
ResultActivity.scanText2.setText(rawResult.getText());
onBackPressed(); 
}

这是我的新活动的代码,用于显示结果:

public class ResultActivity extends AppCompatActivity {
public static TextView scanText2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_patient);
scanText2 = (TextView) findViewById(R.id.scanText2);
}
}

这有很多问题:

  1. 您正在启动PatientActivity,而不是handleResult()中的ResultActivity
  2. 您正试图使用以下代码在另一个Activity中设置TextView的值:ResultActivity.scanText2.setText(rawResult.getText());

这绝对不是。当您启动ResultActivity时,将数据作为Intent的额外数据传递给它。您不能像那样访问另一个Activity的视图。

  1. 您期望ResultActivity.scanText2将包含对TextView的引用,但此时它将仅包含null。原因是ResultActivity实际启动并调用其onCreate()需要一些时间。您尚未在代码中说明此时间。要解决这个问题,请参阅上面的(2(

此外,您的logcat中应该有一堆有用消息的崩溃。以后,请在那里解决问题和/或在您的Stackoverflow问题中发布带有stacktrace的消息。

最新更新