如何在没有任何用户交互的情况下返回上一个活动

时间:2011-06-01 12:55:16

标签: android

我是Android开发的新手,我正在尝试创建一个在循环中调用活动的Android应用程序,但每次活动返回结果时都必须显示主屏幕。问题是没有任何用户交互,因为智能手机将被安装在机器人上并且它将扫描条形码,当它读取条形码时它应该返回到之前的活动,这会改变其背景颜色,所以机器人的颜色传感器可以读取它(我无法使蓝牙连接工作,这就是我发送信息的方式)。之后,它必须再次开始扫描。我已经尝试了我能想到的一切,但它要么返回到主要活动(显示颜色),要么再也没有开始扫描,或者每次得到结果时继续扫描,但从不显示主屏幕。这是代码的最后一个版本:

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");
        }
    }
}

这使得它每次获得结果时都会再次开始扫描,但它不会显示主屏幕。

1 个答案:

答案 0 :(得分:0)

您的Thread.sleep()似乎阻止了用户界面3秒,并且在您的背景更改后有机会刷新屏幕之前立即重新启动您的扫描活动。

尝试更改背景,然后将三秒等待和startActivityForResult()代码移动到Handler,让UI在另一个线程正在休眠时更新。