Задать вопрос
@TILLhen

Как запустить метод второй Activity, с помощью кнопки на первой Activity?

Создаю приложение, в которое встроил сканер QR-code. Мне необходимо сделать так, чтобы при нажатии кнопки на одной Activity, нажималась кнопка на другой Activity, либо по нажатию кнопки на первой Activity открывался сразу сканер на второй Activity.
5ad5bb04b35f3922954823.png5ad5bb0d1a305679331643.png

Вот так я использую intent, чтобы перейти на другую Activity:

ImageButton scannerButton;

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

    scannerButton = (ImageButton) findViewById(R.id.scannerButton);
    scannerButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(HomeActivity.this, ScannerActivity.class);
            startActivity(intent);
        }
    });
}
}


Код самого сканера:

static final String ACTION_SCAN = "com.google.zxing.client.android.SCAN";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_scanner);
}

// Запуск сканера qr-кода:
public void scanQR(View v) {
    try {

        // Запускаем переход на com.google.zxing.client.android.SCAN с помощью intent:
        Intent intent = new Intent(ACTION_SCAN);
        intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
        startActivityForResult(intent, 0);
    } catch (ActivityNotFoundException anfe) {

        // Предлагаем загрузить с Play Market:
        showDialog(ScannerActivity.this, "Сканнер не найден", "Установить сканер с Play Market?", "Да", "Нет").show();
    }
}

// alert dialog для перехода к загрузке приложения сканера:
private static AlertDialog showDialog(final Activity act, CharSequence title,
                                      CharSequence message,CharSequence buttonYes, CharSequence buttonNo) {
    AlertDialog.Builder downloadDialog = new AlertDialog.Builder(act);
    downloadDialog.setTitle(title);
    downloadDialog.setMessage(message);
    downloadDialog.setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialogInterface, int i) {

            // Ссылка поискового запроса для загрузки приложения:
            Uri uri = Uri.parse("market://search?q=pname:" + "com.google.zxing.client.android");
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            try {
                act.startActivity(intent);
            } catch (ActivityNotFoundException anfe) {

            }
        }
    });
    downloadDialog.setNegativeButton(buttonNo, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialogInterface, int i) {
        }
    });
    return downloadDialog.show();
}

// Обрабатываем результат, полученный от приложения сканера:
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {

            // Получаем данные после работы сканера и выводим их в Toast сообщении:
            String contents = intent.getStringExtra("SCAN_RESULT");
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
            Toast toast = Toast.makeText(this, "Содержание: " + contents + " Формат: " + format, Toast.LENGTH_LONG);
            toast.show();
        }
    }
}
}
  • Вопрос задан
  • 883 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vasilek-nik
При запуске активити через Intent можно передавать ей данные вида "ключ-значение". В запускаемой активити их можно получить и обработать.
Главная активити:
Intent intent = new Intent(HomeActivity.this, ScannerActivity.class);
intent.putExtra("needScan", true);
startActivity(intent);


В onCreate у запускаемой активити это можно обработать:
Intent intent = getIntent();
if (intent.getBooleanExtra("needScan", false))
    scanQR(null);

Данные передавать можно разных типов. Подробнее про Intent в документации
Прошу прощение за возможные неточности, писал с тапка)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы