我有一个带有按钮的片段设置,当按下按钮时,该按钮导航到片段扫描仪。扫描仪片段应导航回扫描仪并传递图像分析器的输出(二维码)。
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
var view = inflater.inflate(R.layout.fragment_scanner, container, false)
var previewView = view.findViewById<View>(R.id.previewView)
cameraExecutor = Executors.newSingleThreadExecutor()
cameraProviderFuture = ProcessCameraProvider.getInstance(this.context!!)
cameraProviderFuture.addListener(Runnable {
val cameraProvider = cameraProviderFuture.get()
bindPreview(cameraProvider, view) {
val bundle = Bundle().apply {
putString("param1", p1)
putString("param2", p2)
}
findNavController().navigate(R.id.action_scanner_to_setup, bundle) }
}, ContextCompat.getMainExecutor(this.context!!) )
return view
}
我已将操作从 Scanner 正确设置为 Setup,事实上,如果我尝试在该 Runnable 块之外进行导航(),它会起作用。
我做错了什么?
答案 0 :(得分:1)
尝试在内部添加导航
Handler(Looper.getMainLooper()).post {
//Here
}
或者如果你能得到活动
this.runOnUiThread {
//Here
}