我是 android 开发的新手,我正在尝试制作一个循环调用 Activity 的 android 应用程序,但每次 Activity 返回结果时,它都必须显示主屏幕。问题是不能有任何用户交互,因为智能手机要安装在机器人上,它要扫描条形码,当它读取条形码时,它应该返回到上一个 Activity ,这会改变它的背景颜色,所以机器人的颜色传感器可以读取它(我无法使蓝牙连接正常工作,所以这就是我发送信息的方式)。之后它必须再次开始扫描。我已经尝试了我能想到的所有方法,但它要么返回到主要 Activity (显示颜色),但再也不会开始扫描,要么在每次获得结果时继续扫描,但从不显示主屏幕。这是代码的最新版本:
protected void onResume() {
super.onResume();
if(contents.contains("left")){
layout.setBackgroundColor(Color.RED);
}
else if(contents.contains("right")){
layout.setBackgroundColor(Color.BLUE);
}
try {
Thread.sleep(3000);
}
catch (InterruptedException e) {}
if(contents.contains("q")){
layout.setBackgroundColor(Color.GREEN);
try {
Thread.sleep(3000);
}
catch (InterruptedException e) {}
System.exit(0);
}
try {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, QR_ACTIVITY);
}
catch (Exception e) {}
}
@Override
protected void onActivityResult(int requestCode, int resultCode,Intent intent)
{
super.onActivityResult(requestCode, resultCode, intent);
if (resultCode == RESULT_OK) {
if (requestCode == QR_ACTIVITY){
contents = intent.getStringExtra("SCAN_RESULT");
}
}
}
这使得它在每次获得结果时都会重新开始扫描,但不会显示主屏幕。
最佳答案
看起来您的 Thread.sleep()
阻塞了 UI 3 秒,并在背景更改后有机会刷新屏幕之前立即重新启动您的扫描 Activity 。
尝试更改背景,然后将三秒等待和 startActivityForResult()
代码移动到 Handler
中,让 UI 更新,而另一个线程正在休眠。
关于android - 如何在没有任何用户交互的情况下返回到之前的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6201466/