Я еще не совсем понял контекст. В большинстве случаев я вижу, что люди используют это ключевое слово для контекста в конструкторе. Я пишу приложение, которое имеет два действия - MainActivity и DisplayMessageActivity. Оба действия содержат пункты меню - Поиск и настройки. Если я коснусь «Поиск», должен появиться тост, говорящий: «Поиск был нажат» и тот же для настроек. Поскольку эти действия будут одинаковыми для прикосновений от обоих видов деятельности, я сделал отдельный класс MenuMethods, который будет обрабатывать отображение тоста. MenuMethods будет содержать 2 общедоступных статических метода void для отображения тоста. Вот соответствующий код:Связано с контекстом в Android
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
MenuMethods.openSearch();
}
if (id==R.id.action_search){
MenuMethods.openSettings();
}
и методы в классе MenuMethods выглядит следующим образом:
public class MenuMethods {
public static void openSearch(){
Toast.makeText(this, "Search was Clicked!", Toast.LENGTH_SHORT).show();
}
public static void openSettings(){
Toast.makeText(this, "Settings was Clicked!",Toast.LENGTH_SHORT).show();
}
}
Возможные ошибки: (приложение) .MenuMethods.this не может ссылаться из статического контекста. Как исправить это?
Большое спасибо Алекс. Я просто новичок. Я еще учусь. Я писал этот код, чтобы понять контекст. В этом случае я думаю, что MenuMethods.this не является допустимым контекстом, потому что он не распространяется на какие-либо действия. Я прав? – Whiskeyjack
Да, MenuMethods - это всего лишь класс, который вы написали, он ничего не знает о Context. Напротив, Activity расширяет контекст, поэтому Activity является контекстом. Контекст - это класс, ничего другого –