تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ afsharpour
مدیریت کردن onactivityresult در فرگمنت
جامعه جاوا (اندروید) ایجاد شده در ۰۲ بهمن ۱۳۹۸

استاد من یه اپ دارم مینویسم که یک اکتیوتی داره وبقیه صفحات فرگمنت هستند. توی این اپ میخام پرداخت درون برنامه ای پیاده کنم.همه چیز اوکی هست و مشکلی نیست منتها زمانی که میخوایم کاربر خرید بکنه از دستور 

iabHelper.launchPurchaseFlow

 

استفاده میشه که جواب خرید برمیگرده به onactivityresult اکتیویتی

من اگر یک iabHelper استاتیک توی اکتیویتی بسازم میتونم اون رو توی ondestroy اکتیویتی dispose بکنم منتها عملا تا وقتی برنامه باز هست اکتیویتی ما بسته نمیشه که این کد اجرا بشه و ممکنه از لحاظ بهینگی اپ رو دچار مشکل بکنه.

چطور این مشکل رو حلش کنم؟یعنی iabHelper رو حتی توی فرگمنت هم بسازم جواب به onactivityresult اکتیویتی برمیگرده

پس مشکل استاتیک اینه که dispose کردنش توی ondestroy اکتیویتی اتفاق میفته که عملا تا وقتی برنامه باز هست اجرا نمیشه واگر استاتیک تعریف نکنم و توی فرگمنت تعریف بکنم میتونیم dispose کنیم ولی جواب توی onactivityresult اکتیویتی برمیگرده و اون موقه از توی اکتیویتی به iabHelper ی که توی فرگمنت تعریف کردم دسترسی ندارم ونمیتونم دستور زیر رو اجرا کنم

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if(requestCode==1001){
        iabHelper.handleActivityResult(requestCode,resultCode,data)
    }else{
        super.onActivityResult(requestCode, resultCode, data)
    }
}

استاد وقتی onactivityresult رو توی فرگمنت فراخوانی میکنم صدا زده نمیشه و کد زیر اجرا نمیشه وطبیعتا اصلا ا\ درست کار نمیکنه

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)
    }
}

 

میشه بگید چیکار باید بکنم که توی onactivityresult فرگمنت بتونم جواب رو بگیرم؟ممنون میشم جواب بدید

afsharpour ۰۳ بهمن ۱۳۹۸، ۱۵:۴۳