Контекст в EnableListAdapter

#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());
  

потому что, согласно моему прочтению, это хорошая практика.