#android #this #android-context
#Android #это #android-контекст
Вопрос:
Я создал ExpandableListAdapter
класс, и мне нужно отправить ему контекст из действия, которое обращается к нему.
MyActivity.class:
MenuExpandableListAdapter.useInstanceContext(getApplicationContext());
MyExpandableListAdapter.class:
static Context context;
public static void useInstanceContext(Context applicationContext) {
context = applicationContext;
}
Приведенный выше код работает, но это также работает:
MenuExpandableListAdapter.useInstanceContext(this.getApplicationContext());
В чем разница? Это хороший способ передать контекст? Я все еще пытаюсь полностью понять контекст.
Ответ №1:
Контекст необходим для того, чтобы получить доступ к ресурсам и некоторым другим вещам. Итак, оба контекста приложения и действия работают. Но хорошая практика сводится к самой маленькой вещи, которая работает, то есть к активности в вашем случае. Итак, я бы предложил вам новый способ:
MenuExpandableListAdapter.useInstanceContext(this);
Кроме того, в вашем примере нет разницы между вызовами. this
это просто ссылка на текущий объект.
Ответ №2:
this
относится к объекту, который в данный момент выполняет код. если метод объявлен в том же классе и не является статическим, вызывать его то же самое:
getApplicationContext()
и
this.getApplicationContext()
(То же самое относится и к членам класса)
Ответ №3:
MenuExpandableListAdapter.useInstanceContext(getApplicationContext());
Метод getApplicationContext() будет вызываться с использованием вызывающего / текущего объекта неявно.
во-вторых, вы явно указываете вызывающий / текущий объект, потому что это специальный объект, который всегда ссылается на вызывающий объект.
я предлагаю вам использовать это
MenuExpandableListAdapter.useInstanceContext(this.getApplicationContext());
потому что, согласно моему прочтению, это хорошая практика.