Как вызвать метод из другого класса без передачи контекста? - PullRequest
2 голосов
/ 14 ноября 2010

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

Вот часть моего кода:

findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                        Tools.pickRandomItem();

                    }
});

и в классе инструментов:

     public static void pickRandomItem() {   

    Cursor cur = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, 
               null, null,MediaColumns.TITLE + " ASC");




}

Используя приведенный выше код, он выдает ошибку на getContentResolver(), и все мои попытки передать контекст потерпели неудачу.

Я довольно новичок в программировании для Android и не до конца понимаю концепцию контекстов. Буду признателен за любую помощь, которую вы можете оказать!

Ответы [ 2 ]

7 голосов
/ 14 ноября 2010

Создайте класс, который расширяет Приложение для вашего проекта (вы должны также объявить его в Манифесте), в Приложении сделайте

private static MyApplication app

в onCreate ()он присваивает его полю

app = this;

и делает в нем

public static MyApplication get()

.Когда вам нужен контекст, вы можете использовать

MyApplication.get()
2 голосов
/ 14 ноября 2010

Несколько подсказок по контексту:

  1. Получить контекст в вашем View через getContext() и передать его getContentResolver(context).

  2. Используйте подход приложения-контекста, как описано здесь @ apps.

  3. Не хранить контекст внутри Activity или Views. Это приводит к утечкам памяти .

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