Как после сканирования QR-кода открыть другое действие с переданными QR-данными? - PullRequest
0 голосов
/ 09 июля 2020

В настоящее время я работаю над QR-сканером школьного проекта, чтобы просто извлечь текст из QR-кода и отобразить его в следующем упражнении. Но он просто разбился, когда я использую намерение, но работает, когда он просто отображается в активности сканера. (T .T)

Сканирование. java

    @Override
    protected void onDestroy(){
        scannerView.stopCamera();
        super.onDestroy();
    }

    @Override
    public void handleResult(Result result){
        String something = result.getText();
        Intent intent = new Intent (this, Result.class);
        intent.putExtra("SCAN_RESULT", something);
        setResult(RESULT_OK,intent);
        startActivityForResult(intent, 1);
        finish();
    }

Результат. java

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);

        output =  findViewById(R.id.Result);

    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
        if (requestCode==0){
            if(resultCode==RESULT_OK){
                String contents = intent.getStringExtra("SCAN_RESULT");
                output.setText(contents);
            }
        }
    }

Ответы [ 4 ]

0 голосов
/ 09 июля 2020

Вам следует переименовать действие Result в ResultActivity. Я думаю, проблема здесь в том, что имя класса вывода сканера - это результат, а ваше следующее имя действия также является результатом, так что это сбивает приложение с толку.

0 голосов
/ 09 июля 2020

Сначала вам нужно понять процесс запуска действия для получения результата, проверьте эту ссылку

Для вашей проблемы у вас есть start Result. java activity, в его методе onCreate () начать сканирование. java

 Intent intent = new Intent (this, Scan.class);
 startActivityForResult(intent, 1);

Нет в сканировании. java обработать результат сканирования и передать его в сканирование. java

@Override
public void handleResult(Result result){
    String something = result.getText();
    Intent intent = new Intent ();
    intent.putExtra("SCAN_RESULT", something);
    setResult(RESULT_OK,intent);
    finish();
}

в сканировании. java в onActivityResult () обработает результат

0 голосов
/ 09 июля 2020

Проблема в результате. java. Вы должны получить доступ к своим данным SCAN_RESULT только в onCreate

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_result);

    output =  findViewById(R.id.Result);
    String contents = getIntent().getStringExtra("SCAN_RESULT");
            output.setText(contents);

}

Когда вы используете startActivityForResult в Scan.java; ваш onActivityResult должен быть в той же деятельности. И в Результате нет значения onActivityResult. java

0 голосов
/ 09 июля 2020

Вы объявили свой класс Result. java в AndroidManifest? Разместите здесь свой журнал cra sh.

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