Size: a a a

Android Developers

2022 January 05

A

Artem in Android Developers
ну так там они наверное не в фрагменте такое проверяют, а в активити
источник

АМ

Артем Миницкий... in Android Developers
Да я написал это в вопросе
источник

АМ

Артем Миницкий... in Android Developers
Вот мой метод:
    private void refreshAd(View view) {
       AdLoader.Builder builder = new AdLoader.Builder(getActivity(), ADMOB_AD_UNIT_ID);
       builder.forNativeAd(
               nativeAd -> {
                   boolean isDestroyed;

                       isDestroyed = getActivity().isDestroyed();
                       if (isDestroyed || getActivity().isFinishing() || getActivity().isChangingConfigurations()) {
                           nativeAd.destroy();
                           return;
                       }

                       if (this.nativeAd != null) {
                           this.nativeAd.destroy();
                       }
                       this.nativeAd = nativeAd;
                       FrameLayout frameLayout = view.findViewById(R.id.fl_adplaceholder);
                       NativeAdView adView = (NativeAdView) getLayoutInflater().inflate(R.layout.ad_unified, null);
                       populateNativeAdView(nativeAd, adView);
                       frameLayout.removeAllViews();
                       frameLayout.addView(adView);
               });

       VideoOptions videoOptions = new VideoOptions.Builder().build();

       NativeAdOptions adOptions = new NativeAdOptions.Builder().setVideoOptions(videoOptions).build();

       builder.withNativeAdOptions(adOptions);

       AdLoader adLoader = builder.withAdListener(
               new AdListener() {
                   @Override
                   public void onAdFailedToLoad(LoadAdError loadAdError) {

                   }
               }).build();

       adLoader.loadAd(new AdRequest.Builder().build());

   }

Вызываю его в onStart() фрагмента
    @Override
   public void onStart() {
       super.onStart();
       Activity activity = getActivity();
       getActivity().finish();
       if (activity != null && isAdded()) {
           refreshAd(view);
       }
   }
источник

I

Ivansuper in Android Developers
Твой фискальный чек слабо читаемый в чате : ) Поэтому говорят кидайте на сайты по ссылке
источник

АМ

Артем Миницкий... in Android Developers
источник

I

Ivansuper in Android Developers
Твой метод более нигде не вызывается? Только в onStart?
источник

АМ

Артем Миницкий... in Android Developers
Да, только там один раз при заходе
источник

I

Ivansuper in Android Developers
У тебя внутри лямбда. Она может быть вызвана когда угодно
источник

I

Ivansuper in Android Developers
У тебя два варианта:
1) Получать активити внутри лямбды и проверять нулл ли она, и выбирать как действовать
2) Получить ее в onStart и передать в свою функцию, и использовать только ее без внутренних дополнительных getActivity
источник

I

Ivansuper in Android Developers
Ну или третий вариант — перепахать код совсем иначе, но тут не скажу, ибо надо уже все видеть что там и как
источник

СП

Сергей П. in Android Developers
че не нравится в котлине - нет напоминаний "оберни эту штуку в  try catch да обработай, дурень, а то в проде упадет". В джаве такое не пропустишь. Хоть плагин пиши для этого.
источник

I

Ivansuper in Android Developers
У котлина просто философия на то, что ты у таких функций возвращаешь Result<T>
источник

I

Ivansuper in Android Developers
Если где-то исключение, то это сразу неправильно
источник

I

Ivansuper in Android Developers
А вот претензия на то что оно на стыке интеропа с джавой не предупреждает о них — это да
источник

АМ

Артем Миницкий... in Android Developers
Еще я могу убрать эту часть раз я все равно уже внутри фрагмента и не проверять что там с активити но тогда получаю вот это:
java.lang.IllegalStateException: onGetLayoutInflater() cannot be executed until the Fragment is attached to the FragmentManager.

Что точно так же будет каждый раз как активити где-то там упало((
источник

СП

Сергей П. in Android Developers
дык у меня интероп сс джавой. Я вот щас пишу библиотеку для звуковых streams - там джава система кидает 3-4 вида исключений от аппаратуры. Обработать в смысле "ну и черт с ним, пляшем дальше" я могу скажем одно. Принуждать использующего юзера на Джава легаси менять философию и переходить на result - ну такое себе. Тебм более что те методы обычно void. значит надо пробрасывать выше в любом случае, какой result при успехе, зачем. Уже жалею что на котлине написал
источник

АМ

Артем Миницкий... in Android Developers
Если делаю вторым способом то сворачивается прила но без ошибки, почти try-catch
источник

I

Ivansuper in Android Developers
Ты в onStart .finish() делаешь
источник

АМ

Артем Миницкий... in Android Developers
Нет в начале метода refreshAd()
источник

I

Ivansuper in Android Developers
источник