2015-02-11 3 views
0

Я еще не совсем понял контекст. В большинстве случаев я вижу, что люди используют это ключевое слово для контекста в конструкторе. Я пишу приложение, которое имеет два действия - 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 не может ссылаться из статического контекста. Как исправить это?

ответ

0
MenuMethods.openSearch(MyActivity.this); 

public static void openSearch(Context ctx){ 

    Toast.makeText(ctx, "Search was Clicked!", Toast.LENGTH_SHORT).show(); 
} 

Там мало причин, хотя иметь отдельный класс MenuMethods в вашем случае

+0

Большое спасибо Алекс. Я просто новичок. Я еще учусь. Я писал этот код, чтобы понять контекст. В этом случае я думаю, что MenuMethods.this не является допустимым контекстом, потому что он не распространяется на какие-либо действия. Я прав? – Whiskeyjack

+0

Да, MenuMethods - это всего лишь класс, который вы написали, он ничего не знает о Context. Напротив, Activity расширяет контекст, поэтому Activity является контекстом. Контекст - это класс, ничего другого –

Смежные вопросы