google play billing libraryを使って課金後に特定のフラグメントを即時非表示にしたいです。billingUpdataListener内で共有プリファレンスの値をtrueに変更しています。課金完了後にダイアログが閉じられると、課金メニューは共有プリファレンスの値変更とともに非表示になっているのに、framelayoutにreplaceで展開したフラグメントが破棄されず残ってしまいます。
override fun onPrepareOptionsMenu(menu: Menu?): Boolean {// val billing=pref.getBoolean("billing", false) if(billing==true){ menu?.getItem(2)?.setVisible(false) } return true }
override fun onResume(){ val billing=pref.getBoolean("billing",false) if(billing==false){ val fragment=Fragment() supportFragmentManager.biginTransaction()apply{ replace(R.id.framelayout,fragment) commit() } } }
onResume()に記載したfragmentに関するコードが実行されていないのかと思い、確認のため
val billing=pref.getBoolean("billing",false) if(billing==false){ val fragment=Fragment() supportFragmentManager.biginTransaction()apply{ replace(R.id.framelayout,fragment) commit() } }else{ binding.framelayout.removeAllViews() }
とすると、課金ダイアログが閉じられるとともにフラグメントが消えました。ということは、onResume()は実行されていて、値はtrueに変更されているということだと思うのですが、なぜ以前のフラグメントがそのまま表示されてしまうのでしょうか?replaceしていてもバックスタックに残っているということでしょうか?もし破棄させる方法をご存じの方がいらっしゃれば教えて下さい。よろしくお願いします。
あなたの回答
tips
プレビュー