Я знаю, что этот вопрос может быть задан до того, как я все же хотел задать свой вопрос для всех, мне нужно сделать функцию сканера в моем приложении, я использую в своем проекте ботонную навигацию, и поэтому я делаю больше более одного фрагмента по одной и той же деятельности. Теперь в этом фрагменте мне нужно вызвать 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 не вызывается во фрагменте , но моя проблема не решена