I implemented Rewarded Interstitial Ad in my jetpack project. I used the second activity to show the ad and now I want to implement OnUserEarnedRewardListener. My user can see the last screen after the ad finishes. I find it challenging to navigate from compos to activity and conversely with an argument. These are my Screen and NavGraph.
sealed class Screens (val route: String){
object SMasks: Screens("s_masks")
object BMasks: Screens("b_masks")
object FinalShow: Screens("final_show")
object ProgressBar: Screens("progress_bar")
object RewardedShow: Screens("rewarded_show")
}
and this is my NavGraph
@SuppressLint("UnrememberedMutableState")
@Composable
fun MyNavGraph(
navController: NavHostController
) {
val actions = remember(navController) { MainActions(navController) }
NavHost(
navController = navController,
startDestination = BottomNavItems.SMasks.route
) {
composable(BottomNavItems.SMasks.route) {
SMaskScreen(actions
)
}
composable(
Screens.BMasks.route
) {
BMasksScreen(navController, actions)
}
composable("${Screens.FinalShow.route}/{maskArg}") {
val maskArg = it.arguments?.getString("maskArg")
if (maskArg != null) {
FinalShowScreen(
maskArg = maskArg, navController
)
}
}
}
}
}
class MainActions(navController: NavController) {
val gotoFinalShow: (String) -> Unit = { maskArg ->
navController.navigate("${Screens.FinalShow.route}/$maskArg") {
launchSingleTop = true
restoreState = true
}
}
this is my code that when the user clicks on it navigate to RewardShowActivity.
onItemClick = {
maskArg = "mask1"
goToActivity(maskArg = maskArg, context = context)
}
fun goToActivity(context: Context, maskArg: String) {
val intent = Intent(context, RewardedShowActivity::class.java)
intent.putExtra("maskArg", maskArg)
context.startActivity(intent)
}
and this is my RewardedShowActivity
class RewardedShowActivity : ComponentActivity(), OnUserEarnedRewardListener {
val loading = mutableStateOf(true)
private companion object{
const val TAG = "TAG"
}
private var mRewardedInterstitialAd: RewardedInterstitialAd? = null
@SuppressLint("UnrememberedMutableState")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val maskArg = intent.extras!!.getString("maskArg")
setContent {
MyAppTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
CircleIndeterminateProgressBar(isDisplayed =
loading )
}
}
}
override fun onUserEarnedReward(p0: RewardItem) {
??????????
}
}