IntentIntegrator завершается ошибкой, когда я устанавливаюRequestCode - PullRequest
0 голосов
/ 04 декабря 2018

Я просто возвращаюсь к программированию после нескольких лет перерыва и решил попробовать свои силы в разработке под 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);
    }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...