Я пытаюсь открыть сканер и перехватить результат сканирования во фрагментном представлении,
Сканер загружается нормально, но onActivityResult никогда не срабатывает, поэтому я не могу видеть тостер.
import android.R.attr
import android.content.Intent
import android.os.AsyncTask
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ListView
import android.widget.ProgressBar
import android.widget.Toast
import androidx.fragment.app.Fragment
import com.google.zxing.integration.android.IntentIntegrator
import kotlinx.android.synthetic.main.fragment_home.*
import org.json.JSONObject
import java.net.URL
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private const val ARG_PARAM1 = "param1"
private const val ARG_PARAM2 = "param2"
/**
* A simple [Fragment] subclass.
* Use the [HomeFragment.newInstance] factory method to
* create an instance of this fragment.
*/
class HomeFragment : Fragment() {
// TODO: Rename and change types of parameters
private var param1: String? = null
private var param2: String? = null
var dataList = ArrayList<HashMap<String, String>>()
lateinit var progressBar: ProgressBar // Global declare
lateinit var list: ListView // Global declare
private var res: View? = null ;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
param1 = it.getString(ARG_PARAM1)
param2 = it.getString(ARG_PARAM2)
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
scan_btn.setOnClickListener{
val scanner = IntentIntegrator(requireActivity())
scanner.initiateScan()
}
return inflater.inflate(R.layout.fragment_home, container, false);
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
progressBar = view.findViewById(R.id.loader)
list = view.findViewById(R.id.listView)
// Inflate the layout for this fragment
Toast.makeText(requireActivity(), "ViewCreated: ", Toast.LENGTH_LONG).show()
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
Toast.makeText(requireActivity(), "Scanned: But reuslt is null", Toast.LENGTH_LONG).show()
val result =
IntentIntegrator.parseActivityResult(requestCode, resultCode,data)
if (result != null) {
if (result.contents == null) {
Toast.makeText(requireActivity(), "Cancelled", Toast.LENGTH_LONG).show()
} else {
Toast.makeText(requireActivity(), "Scanned: " + result.contents, Toast.LENGTH_LONG).show()
}
} else {
Toast.makeText(requireActivity(), "Scanned: But reuslt is null", Toast.LENGTH_LONG).show()
super.onActivityResult(requestCode, resultCode, data)
}
}
```