Я просто возвращаюсь к программированию после нескольких лет перерыва и решил попробовать свои силы в разработке под Android.В приложении, которое я пишу, используется сканер штрих-кода, и я хочу, чтобы на главном экране было две кнопки, которые выполняют различные задачи, но в конечном итоге заканчиваются методом «onActivityResult» основного действия.Я подумал, что лучший способ сделать это с zxing - это использовать метод setRequestCode из класса IntentIntegrator.Однако, когда я делаю это, мои результаты всегда возвращаются к нулю.Приложение работает нормально, если я удаляю строку, где я устанавливаюRequestCode.Вот мой MainActivity.
import android.content.Intent;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
public class MainActivity extends AppCompatActivity {
TextView tvResults;
Button btnScan;
final int SCAN = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvResults = findViewById(R.id.tvResults);
btnScan = findViewById(R.id.btnScan);
btnScan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
IntentIntegrator integrator = new IntentIntegrator(MainActivity.this); // `this` is the current Activity
integrator.setPrompt("Scan Something");
integrator.setOrientationLocked(false);
integrator.setRequestCode(SCAN);
integrator.initiateScan();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (requestCode==SCAN) {
Toast.makeText(this, "Request Code is: " + requestCode, Toast.LENGTH_LONG).show();
}
if (result != null) {
if (result.getContents() == null) {
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
} else {
tvResults.setText(result.getContents());
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
}