я пытаюсь получить результат сканирования QR-кода во фрагменте, при использовании activity все работает, но после передачи, результат получить не получается. Как это можно исправить?
Как я понял проблема в методе "onActivityResult". Так как результат передается активити, а не фрагменту.
Мой код находится ниже:
public class Fragment_qr extends Fragment implements View.OnClickListener {
private Button btnScanQRCode;
private TextView txtFruit, txtSize, txtColor;
//QR Code Scanner Object
private IntentIntegrator qrScan;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.qr_code_scan_layout, null);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
DisplayMetrics metrics = this.getResources().getDisplayMetrics();
btnScanQRCode = (Button) view.findViewById(R.id.btnScanQRCode);
txtFruit = (TextView) view.findViewById(R.id.txtFruitName);
txtSize = (TextView) view.findViewById(R.id.txtFruitSize);
txtColor = (TextView) view.findViewById(R.id.txtFruitColor);
//Initialize the Scan Object
qrScan = new IntentIntegrator(getActivity());
//OnClickListener Attached to the Button
btnScanQRCode.setOnClickListener(this);
}
//Getting the scan results
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (result != null) {
//Check to see if QR Code has nothing in it
if (result.getContents() == null) {
Toast.makeText(getActivity(), "Result Not Found", Toast.LENGTH_LONG).show();
} else {
//QR Code contains some data
try {
//Convert the QR Code Data to JSON
JSONObject obj = new JSONObject(result.getContents());
//Set up the TextView Values using the data from JSON
txtFruit.setText(obj.getString("fruit"));
txtSize.setText(obj.getString("size"));
txtColor.setText(obj.getString("color"));
} catch (JSONException e) {
e.printStackTrace();
//In case of exception, display whatever data is available on the QR Code
//This can be caused due to the format MisMatch of the JSON
Toast.makeText(getActivity(), result.getContents(), Toast.LENGTH_LONG).show();
txtSize.setText(result.getContents());
System.out.println("code QR: " + result.getContents());
}
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
@Override
public void onClick(View view) {
//initiating the qr code scan
qrScan.initiateScan();
}
}
Помогла такая замена:
public void onClick(View view) {
IntentIntegrator.forFragment(this).initiateScan();
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Не могу понять, как при нажатии на кнопку открыть как бы новый Pane с другими кнопками, не окно а именно Pane в том же окне, как, например, в антивирусе...
В enum Apple определен конструтор и не пойму почему мы пишем сразу перечислениям данные в конструктор именно в ENUM, а не в другом месте при создании...
Пытаюсь написать программу клиент сервер которая будет оповещать клиентов о каких то событиях (например о новых сообщениях) между друг другомВ...
Пробую постигать MVP Pattern для Android приложенийСама суть, вроде, ясна, но для совсем небольших приложений, которые обычно и бывают в примерах