How to return to previous activity without any user interaction
I'm new to android development and I'm trying to make an android app that calls an activity in a loop, but every time the activity returns result it has to show the main screen. The problem is that there can't be any user interaction, because the smartphone is going to be mounted on a robot and it's going to scan for barcodes and when it reads one it should return to the previous activity, which changes its background color, so the robot's color sensor could read it (I couldn't make the bluetooth connection working, so that's how I'm sending the information). After that it has to start scanning again. I've tried everything I could think of but it either returns to the main activity (shows the color), but never starts scanning again, or continues scanning every time it gets a result, but never shows the main screen. Here's the last 开发者_JAVA百科version of the code:
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");
}
}
}
This makes it start scanning again every time it gets a result, but it doesn't show the main screen.
It looks like your Thread.sleep()
is blocking the UI for 3 secs and immediately relaunching your scan activity before it gets the chance to refresh the screen after your background change.
Try changing the background, and then moving both the three second wait -and- the startActivityForResult()
code into a Handler
, leaving the UI to update while the other thread is sleeping.
精彩评论