багер во фрагменте не отслеживает метод OnActivityResult - PullRequest
0 голосов
/ 05 августа 2020

Я знаю, что этот вопрос может быть задан до того, как я все же хотел задать свой вопрос для всех, мне нужно сделать функцию сканера в моем приложении, я использую в своем проекте ботонную навигацию, и поэтому я делаю больше более одного фрагмента по одной и той же деятельности. Теперь в этом фрагменте мне нужно вызвать ImageButton, по щелчку которого должна открываться активность камеры, и после щелчка изображения (или сканирования, допустим, QR-кода) он должен go перейти к тому же фрагменту и вернуть отсканированное значение. Он работал в случае новой активности, но не работал во фрагменте.

это то, что я делаю

 public class HomeFragment extends Fragment implements View.OnClickListener {

 ImageButton btnScanner;
private TextView textViewName, textViewAddress;
//qr code scanner object
private IntentIntegrator qrScan;

  public HomeFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View root = inflater.inflate(R.layout.fragment_home, container, false);

    textViewName=(TextView)root.findViewById(R.id.textViewName);
    textViewAddress=(TextView)root.findViewById(R.id.textViewAddress);

    btnScanner=(ImageButton)root.findViewById(R.id.scannerBtn);
    btnScanner.setOnClickListener(this);

    qrScan = new IntentIntegrator(getActivity());
    return  root;
}

private void initViews(){

}

//Getting the scan results
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
    if (result != null) {
        //if qrcode has nothing in it
        if (result.getContents() == null) {
            Toast.makeText(getContext(), "Result Not Found", Toast.LENGTH_LONG).show();
        } else {
            //if qr contains data
            try {
                //converting the data to json
                JSONObject obj = new JSONObject(result.getContents());
                //setting values to textviews
                textViewName.setText(obj.getString("name"));
                textViewAddress.setText(obj.getString("address"));
            } catch ( JSONException e) {
                e.printStackTrace();
                //if control comes here
                //that means the encoded format not matches
                //in this case you can display whatever data is available on the qrcode
                //to a toast
                Toast.makeText(getContext(), result.getContents(), Toast.LENGTH_LONG).show();
            }
        }
    } else {
        super.onActivityResult(requestCode, resultCode, data);
    }
}


@Override
public void onClick(View view) {
    qrScan.initiateScan();
}

}

Здесь я использую экземпляр библиотеки класс intentIntegrator. Я также посетил { ссылка }: ~: text = if% 20you% 20call% 20startActivityForResult (), доставить% 20result% 20to% 20desired% 20fragment.% 20% 7D & text = super., - onActivityResult% 20 () % 20will и

onActivityResult не вызывается во фрагменте , но моя проблема не решена

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