Вложенная запись enum - PullRequest
       2

Вложенная запись enum

0 голосов
/ 06 апреля 2019

Я написал код, который отображает форму согласия Eu в моем приложении (изначально в java, а не в моем проекте kotlin), в java работает нормально, но в kotlin дает мне «Вложенная запись enum 'PERSONALIZED', доступная через ссылку на экземпляр "и" Вложенная запись перечисления 'NON_PERSONALIZED' доступна через ссылку на экземпляр "val unit = if (consentStatus == consentStatus.PERSONALIZED || consentStatus == consentStatus.NON_PERSONALIZED) Я искал в Интернете, но не нашел решения

val consentInformation = ConsentInformation.getInstance(applicationContext)
        val publisherIds = arrayOf("pub-xxxxxxxxxxxxxx")
        consentInformation.requestConsentInfoUpdate(publisherIds, object : ConsentInfoUpdateListener {
            override fun onConsentInfoUpdated(consentStatus: ConsentStatus) {
                // User's consent status successfully updated.
                val inEEA = ConsentInformation.getInstance(applicationContext).isRequestLocationInEeaOrUnknown

                if (inEEA) {
                    Toast.makeText(this@FramesActivity, consentStatus.toString(), Toast.LENGTH_SHORT).show()
                    val unit = if (consentStatus == consentStatus.PERSONALIZED || consentStatus == consentStatus.NON_PERSONALIZED) {
                        val extras = Bundle()
                        extras.putString("npa", "1")

                        val request = AdRequest.Builder()
                                .addNetworkExtrasBundle(AdMobAdapter::class.java, extras)
                                .build()
                    } else {
                        var privacyUrl: URL? = null
                        try {
                            // TODO: Replace with your app's privacy policy URL.
                            privacyUrl = URL("https://www.your.com/privacyurl")
                        } catch (e: MalformedURLException) {
                            e.printStackTrace()
                            // Handle error.
                        }

                        form = ConsentForm.Builder(this@FramesActivity, privacyUrl)
                                .withListener(object : ConsentFormListener() {
                                    override fun onConsentFormLoaded() {
                                        // Consent form loaded successfully.
                                        form?.show()
                                    }

                                    override fun onConsentFormOpened() {
                                        // Consent form was displayed.
                                    }

                                    override fun onConsentFormClosed(
                                            consentStatus: ConsentStatus?, userPrefersAdFree: Boolean?) {
                                        // Consent form was closed.
                                        val extras = Bundle()
                                        extras.putString("npa", "1")

                                        val request = AdRequest.Builder()
                                                .addNetworkExtrasBundle(AdMobAdapter::class.java, extras)
                                                .build()
                                    }

                                    override fun onConsentFormError(errorDescription: String?) {
                                        // Consent form error.
                                    }
                                })
                                .withPersonalizedAdsOption()
                                .withNonPersonalizedAdsOption()
                                // .withAdFreeOption()
                                .build()
                        form?.load()

                    }
                } else {
                    //  Toast.makeText(StickerPackListActivity.this, "Not In EEA", Toast.LENGTH_SHORT).show();

                }
            }

            override fun onFailedToUpdateConsentInfo(errorDescription: String) {
                // User's consent status failed to update.
                //  Toast.makeText(StickerPackListActivity.this, errorDescription, Toast.LENGTH_SHORT).show();
            }
        })

Ответы [ 2 ]

0 голосов
/ 06 апреля 2019

Эта строка неверна:

val unit = if (consentStatus == consentStatus.PERSONALIZED || consentStatus == consentStatus.NON_PERSONALIZED) {

Если ConsentStatus - это Enum, то, вероятно, вы ищете это, ссылаясь на ConsentStatus и not переменная acceptStatus :

val unit = if (consentStatus == ConsentStatus.PERSONALIZED || consentStatus == ConsentStatus.NON_PERSONALIZED) {
0 голосов
/ 06 апреля 2019

Вы должны просто использовать статическое имя класса следующим образом: ClassName.ENUM, которое должно позаботиться о вашей ошибке.

Вам не нужно создавать экземпляры классов enum для их использования, в вашем случае consentStatus == ConsentStatus.PERSONALIZED

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...