Не удается разрешить метод getBaseContext() в классе extends BaseAdapter

Я пытаюсь использовать функцию удаленной настройки Firebase в моем приложении. Но я получаю сообщение об ошибке "Не удается разрешить метод getBaseContext()". Мой класс расширяет 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();
                        }
                    }
                });
    }
    }

1 ответ

Решение

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

Resources res = context.getResources();

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

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

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

Другие вопросы по тегам