Я хочу реализовать в биллинге приложения этот образец . Я реализую его во фрагменте. Все в порядке. Но когда возвращается результат, я должен вызвать onactivityresult. Я использую onactivityresult во фрагменте для доступа к aibHelper, чтобы управлять им, но onactivityresult никогда не будет вызываться. Что я должен сделать, чтобы onactivityresult во фрагменте
это мои коды:
class CartFragment : Fragment(), IabHelper.OnIabPurchaseFinishedListener,IabHelper.OnConsumeFinishedListener {
lateinit var viewModel: CartViewModel
lateinit var bazarViewModel: BazarViewModel
lateinit var iabHelper: IabHelper
var productId = ""
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
var view = inflater.inflate(R.layout.fragment_cart, container, false)
var recycler = view.findViewById<RecyclerView>(R.id.rv_cart_list)
recycler.layoutManager = LinearLayoutManager(context)
iabHelper = IabHelper(context, resources.getString(R.string.rsa))
iabHelper.startSetup {
if (it.isSuccess) {
Log.i("LOG", "setup finished")
Toast.makeText(context,"ready",Toast.LENGTH_SHORT).show()
}
}
viewModel = ViewModelProviders.of(this).get(CartViewModel::class.java)
viewModel.getProduct().observe(this, Observer {
recycler.adapter = CartAdapter(it) {
productId = it
iabHelper.launchPurchaseFlow(activity!!,it,1003,this)
}
})
return view
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == 1003) {
iabHelper.handleActivityResult(requestCode, resultCode, data)
Log.i("LOG", "on activity if")
} else {
Log.i("LOG", "on activity else")
super.onActivityResult(requestCode, resultCode, data)
}
}
override fun onDestroy() {
super.onDestroy()
iabHelper.dispose()
}
override fun onIabPurchaseFinished(result: IabResult?, info: Purchase?) {
Log.i("LOG", "on purchase finished")
iabHelper.consumeAsync(info,this)
}
override fun onConsumeFinished(purchase: Purchase?, result: IabResult?) {
Toast.makeText(context,"consume success",Toast.LENGTH_SHORT).show()
Log.i("LOG","consume finished")
}
}