前提・実現したいこと
Fragmentでボタンを押下したときにバーコードを読み取り、
バーコードの番号をToastに表示させたいです。
発生している問題・エラーメッセージ
FragmentのsetOnClickListenerでボタン押下時にバーコード読み取り画面に遷移しているのですが、
その後Activityで書いている処理が呼ばれておらず、Toastに読み込んだ番号が表示されません。
バーコードの読み取りにはZxingを使用しています。
FragmentからAvtivityを呼ぶためにはどのようにすれば良いのでしょうか。
該当のソースコード
Kotlin
1class TopFragment : Fragment() { 2 3 4 override fun onCreateView( 5 inflater: LayoutInflater, container: ViewGroup?, 6 savedInstanceState: Bundle? 7 ): View? { 8 val binding: FragmentTopBinding =DataBindingUtil.inflate(inflater,R.layout.fragment_top,container,false) 9 10 binding.button1.setOnClickListener { 11 val intentIntegrator= IntentIntegrator.forSupportFragment(this).apply{ 12 setPrompt("バーコード読み取り") 13 14 captureActivity=BarcodeActivity::class.java 15 } 16 intentIntegrator.initiateScan() 17 }
class BarcodeActivity : CaptureActivity(){ @SuppressLint("ShowToast") override fun onActivityResult(requestCode:Int,resultCode:Int,data: Intent?){ val result:IntentResult= IntentIntegrator.parseActivityResult(requestCode,resultCode,data) val barcodeValue = result.contents Toast.makeText(this,barcodeValue,Toast.LENGTH_LONG).show() Log.d("バーコード",barcodeValue) if(null==barcodeValue) { Toast.makeText(this, "read error", Toast.LENGTH_LONG).show() }else{ Toast.makeText(this,barcodeValue,Toast.LENGTH_LONG).show() } } }
試したこと
Fragmentでintentを作成してみましたがActivityが呼ばれている気配はありませんでした。
binding.button1.setOnClickListener { val intent=Intent(activity,BarcodeActivity::class.java) startActivity(intent) // val intentIntegrator= IntentIntegrator.forSupportFragment(this).apply{ // setPrompt("バーコード読み取り") // //// captureActivity=BarcodeActivity::class.java // } // intentIntegrator.initiateScan() }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。