我正在尝试制作一个简单的二维码扫描仪,如果结果显示在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);
}
}
这有很多问题:
- 您正在启动
PatientActivity
,而不是handleResult()
中的ResultActivity
- 您正试图使用以下代码在另一个
Activity
中设置TextView
的值:ResultActivity.scanText2.setText(rawResult.getText());
这绝对不是。当您启动ResultActivity
时,将数据作为Intent
的额外数据传递给它。您不能像那样访问另一个Activity
的视图。
- 您期望
ResultActivity.scanText2
将包含对TextView
的引用,但此时它将仅包含null
。原因是ResultActivity
实际启动并调用其onCreate()
需要一些时间。您尚未在代码中说明此时间。要解决这个问题,请参阅上面的(2(
此外,您的logcat中应该有一堆有用消息的崩溃。以后,请在那里解决问题和/或在您的Stackoverflow问题中发布带有stacktrace的消息。