2017-01-14 6 views
1

Я пытаюсь использовать функцию удаленной конфигурации firebase в своем приложении. Но я получаю ошибку «Не удается разрешить метод getBaseContext()». Мой класс расширяет BaseAdapter, который выглядит ниже. Я использую только метод, пожалуйста, помогите.Не удается разрешить метод getBaseContext() в классе extends BaseAdapter

public class CustomAdapter_new extends BaseAdapter { 
..... 
...... 
........ 
     private void initRemoteConfig() { 
     mRemoteConfig = FirebaseRemoteConfig.getInstance(); 

     Resources res = context.getResources(); 

     HashMap<String, Object> defaults = new HashMap<>(); 
     defaults.put("claimStatusEnquiry", context.getResources().getString(R.string.claimStatusEnquiry));  defaults.put("locateYourPfOffice", context.getResources().getString(R.string.locateYourOffice)); 
     defaults.put("faq", context.getResources().getString(R.string.faq)); 

     mRemoteConfig.setDefaults(defaults); 
     FirebaseRemoteConfigSettings remoteConfigSettings = new FirebaseRemoteConfigSettings.Builder() 
       .setDeveloperModeEnabled(true) 
       .build(); 
     mRemoteConfig.setConfigSettings(remoteConfigSettings); 
     fetchRemoteConfigValues(); 
    } 

    private void fetchRemoteConfigValues() { 
     long cacheExpiration = 600; 

     //expire the cache immediately for development mode. 
     if (mRemoteConfig.getInfo().getConfigSettings().isDeveloperModeEnabled()) { 
      cacheExpiration = 0; 
     } 

     mRemoteConfig.fetch(cacheExpiration) 
       .addOnCompleteListener(this, new OnCompleteListener<Void>() { 
        @Override 
        public void onComplete(Task<Void> task) { 
         if (task.isSuccessful()) { 
          // task successful. Activate the fetched data 
          mRemoteConfig.activateFetched(); 

         } else { 
          //task failed 
          Toast.makeText(getBaseContext(), "Please Connect To Internet!!", Toast.LENGTH_SHORT).show(); 
         } 
        } 
       }); 
    } 
    } 
+0

Компилятор не лжет. У вашего класса нет метода с именем 'getBaseContext()'. Вы либо должны предоставить это самостоятельно, либо найти правильный класс для расширения, как ['BaseAdapter'] (https://developer.android.com/reference/android/widget/BaseAdapter.html) не предоставляет этот метод для вас. –

+0

Как вы называете 'fetchRemoteConfigValues ​​()'? –

+0

'Ресурсы res = context.getResources();' Что такое 'context' в этой строке? Где вы объявили и инициализировали его? –

ответ

2

Компилятор не врут. У вашего класса нет метода с именем getBaseContext(). BaseAdapter не предоставляет этот метод для вас. Однако для создания Toast вам нужен объект Context. Существует много способов получить доступ к Context. Оказывается, что у вас уже есть один доступный, так как вы используете его в строке

Resources res = context.getResources(); 

Скорее всего, вы должны просто заменить getBaseContext() с context:

Toast.makeText(context, ...).show(); 

я настоятельно рекомендую вам узнать больше о видимости переменных, полей классов и параметров метода. Все это фундаментальные понятия в Java. Если вы понимаете, как все это работает, вам будет намного проще писать приложения для Android.

+0

Я отредактировал мой код, пожалуйста, проверьте его. Когда я использую «private void fetchRemoteConfigValues ​​(контекст контекста)», я получаю еще одну ошибку, когда я вызываю «fetchRemoteConfigValues ​​()» как: Ошибка: (213, 9): метод fetchRemoteConfigValues ​​в классе CustomAdapter_new не может применяться к заданным типам; required: Context found: no arguments Причина: фактические и формальные списки аргументов различаются по длине –

+0

@ArbazAlam Ошибка говорит вам, что вам нужно отправить параметр в метод 'fetchRemoteConfigValues ​​()'. –

+0

@ArbazAlam На основании кода в вашем недавнем редактировании я изменил свое предлагаемое решение. Это обоснованное предположение, поскольку вы все еще не указали некоторые детали в коде, который вы опубликовали. –

 Смежные вопросы

  • Нет связанных вопросов^_^