Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让我的应用程序记住kotlin中奖励视频广告赚取的硬币数?_Kotlin_Sharedpreferences_Reward - Fatal编程技术网

如何让我的应用程序记住kotlin中奖励视频广告赚取的硬币数?

如何让我的应用程序记住kotlin中奖励视频广告赚取的硬币数?,kotlin,sharedpreferences,reward,Kotlin,Sharedpreferences,Reward,当我关闭应用程序时,文本视图中的数字返回到0 我尝试使用几种不同的共享首选项,但都不起作用。我有另一个应用程序,是一个提醒应用程序,它在那里工作 对于此应用程序,已赢取1枚硬币,但单击奖励的应用程序。 这些硬币怎么能被保存?我的代码如下: private val TAG = "MainActivity" private var totalCoins = 0 private var adLoadProgress = 0 private lateinit var mAdView

当我关闭应用程序时,文本视图中的数字返回到0

我尝试使用几种不同的共享首选项,但都不起作用。我有另一个应用程序,是一个提醒应用程序,它在那里工作

对于此应用程序,已赢取1枚硬币,但单击奖励的应用程序。 这些硬币怎么能被保存?我的代码如下:

private val TAG = "MainActivity"
private var totalCoins = 0
private var adLoadProgress = 0

private lateinit var mAdView : AdView
private lateinit var rewardedAd: RewardedAd
private lateinit var mInterstitialAd: InterstitialAd
private lateinit var sharedPref: SharedPreferences

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    MobileAds.initialize(this)
    bannerAd()
    rewardedAd()
    interstitialAd()
}



private fun adsLoadedProgress() {
    ++adLoadProgress

    if (adLoadProgress == 3) {
        Toast.makeText(this, "All ads are loaded", Toast.LENGTH_SHORT).show()
    }
}

private fun interstitialAd() {
    fun nextActivity() {
        val i = Intent(this, InformationActivity::class.java)
        startActivity(i)
    }

    mInterstitialAd = InterstitialAd(this)
    mInterstitialAd.adUnitId = "ca-app-pub-3940256099942544/1033173712"
    mInterstitialAd.loadAd(AdRequest.Builder().build())

    button2.setOnClickListener {
        if (mInterstitialAd.isLoaded) {
            mInterstitialAd.show()
        } else {
            Log.d("TAG", "The interstitial wasn't loaded yet.")
        }
    }

    mInterstitialAd.adListener = object: AdListener() {
        override fun onAdLoaded() {
            // Code to be executed when an ad finishes loading.
            Log.d("TAG", "Interstitial ad loaded")
            adsLoadedProgress()
        }

        override fun onAdFailedToLoad(errorCode: Int) {
            // Code to be executed when an ad request fails.
            Log.d("TAG", "Interstitial ad failed to load")
        }

        override fun onAdOpened() {
            // Code to be executed when the ad is displayed.
            Log.d("TAG", "Interstitial ad opened")
        }

        override fun onAdClicked() {
            // Code to be executed when the user clicks on an ad.
            Log.d("TAG", "Interstitial ad clicked")
        }

        override fun onAdLeftApplication() {
            // Code to be executed when the user has left the app.
            Log.d("TAG", "User left app on interstitial ad")
        }

        override fun onAdClosed() {
            // Code to be executed when the interstitial ad is closed.
            Log.d("TAG", "Interstitial ad closed")
            mInterstitialAd.loadAd(AdRequest.Builder().build())
            nextActivity()
        }
    }

}

private fun bannerAd() {
    mAdView = findViewById(R.id.adView)
    val adRequest = AdRequest.Builder().build()
    mAdView.loadAd(adRequest)

    mAdView.adListener = object: AdListener() {
        override fun onAdLoaded() {
            // Code to be executed when an ad finishes loading.
            Log.d(TAG,"Ad loaded")
            adsLoadedProgress()
        }

        override fun onAdFailedToLoad(errorCode : Int) {
            // Code to be executed when an ad request fails.
            Log.d(TAG,"Ad failed to load")
        }

        override fun onAdOpened() {
            // Code to be executed when an ad opens an overlay that
            // covers the screen.
            Log.d(TAG,"Ad opened")
        }

        override fun onAdClicked() {
            // Code to be executed when the user clicks on an ad.
            Log.d(TAG,"Ad clicked")
        }

        override fun onAdLeftApplication() {
            // Code to be executed when the user has left the app.
            Log.d(TAG,"User left app on ad")
        }

        override fun onAdClosed() {
            // Code to be executed when the user is about to return
            // to the app after tapping on an ad.
            Log.d(TAG,"Ad closed")
        }
    }
}

private fun rewardedAd() {

    fun createAndLoadRewardedAd(): RewardedAd {
        rewardedAd = RewardedAd(this, "ca-app-pub-3940256099942544/5224354917")
        val adLoadCallback = object: RewardedAdLoadCallback() {
            override fun onRewardedAdLoaded() {
                // Ad successfully loaded.
                Log.d(TAG,"Rewarded Ad loaded")
                adsLoadedProgress()
            }
            override fun onRewardedAdFailedToLoad(errorCode: Int) {
                // Ad failed to load.
                Log.d(TAG,"Rewarded Ad failed to load")
            }
        }
        rewardedAd.loadAd(AdRequest.Builder().build(), adLoadCallback)
        return rewardedAd
    }
    fun onRewardedAdClosed() {
        this.rewardedAd = createAndLoadRewardedAd()
    }
    createAndLoadRewardedAd()

    button.setOnClickListener {
        Log.d(TAG,"Button clicked")

        if (rewardedAd.isLoaded) {
            val activityContext: Activity = this@MainActivity
            val adCallback = object: RewardedAdCallback() {
                override fun onRewardedAdOpened() {
                    // Ad opened.
                    Log.d(TAG,"Rewarded Ad opened")
                }
                override fun onRewardedAdClosed() {
                    // Ad closed.
                    Log.d(TAG,"Rewarded Ad closed")
                    onRewardedAdClosed()
                }
                override fun onUserEarnedReward(@NonNull reward: RewardItem) {
                    // User earned reward.
                    Log.d(TAG,"Reward earned successfully")
                    totalCoins+=1
                    tv_total_coins.text = "Total coins: $totalCoins "
                    Toast.makeText(applicationContext, "1 coin earned", Toast.LENGTH_SHORT).show()
                }
                override fun onRewardedAdFailedToShow(errorCode: Int) {
                    Log.d(TAG,"Rewarded Ad failed to show")
                    // Ad failed to display.
                }
            }
            rewardedAd.show(activityContext, adCallback)
        }
        else {
            Log.d("TAG", "The rewarded ad wasn't loaded yet.")
        }
    }
}

标准的Java方式是使用。您只需告诉API要存储什么,它就会使用您平台上合适的任何东西(例如注册表、plist文件或XML文件)来持久化它。