2013-06-17 3 views
0

Я искал в Интернете высоко и низко для ответа на эту ошибку:Android: Non-статический метод не может ссылаться из статического контекста

Non-статический метод «getStringExtra (java.lang.String)» не может ссылаться на статический контекст

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

Intent OpenList = new Intent(this, ListRandom.class); 
OpenList.putExtra("ListItem1",List.get(1)); 
OpenList.putExtra("ListItem2", List.get(2)); 
OpenList.putExtra("ListItem3", List.get(3)); 
OpenList.putExtra("ListItem4",List.get(4)); 
OpenList.putExtra("ListItem5", List.get(5)); 

А вот получать дополнительные услуги, где я получаю ошибку:

Intent OpenList = getIntent(); 
    ListItem1 = Intent.getStringExtra("ListItem1"); 
    ListItem2 = Intent.getStringExtra("ListItem2"); 
    ListItem3 = Intent.getStringExtra("ListItem3"); 
    ListItem4 = Intent.getStringExtra("ListItem4"); 
    ListItem5 = Intent.getStringExtra("ListItem5"); 

Любая помощь будет оценена, как я расту, как программист!

+4

дубликат [Что является причиной «не статический метод не может ссылаться из статического контекста»?] (Http://stackoverflow.com/questions/290884/what-is-the- причина-не-статический-метод-нельзя-ссылаться-из-статического) и http://stackoverflow.com/questions/4922145/non-static-method-cannot-be-referenced-from-a -static-context-error и http://stackoverflow.com/questions/2694566/non-static-method-cannot-be-referenced-from-a-static-context и http://stackoverflow.com/questions/5972764/нестатический-метод, не может быть-ссылки-с-а-статического контекста – CommonsWare

ответ

5

Изменить

Intent OpenList = getIntent(); 
ListItem1 = Intent.getStringExtra("ListItem1"); 
ListItem2 = Intent.getStringExtra("ListItem2"); 
ListItem3 = Intent.getStringExtra("ListItem3"); 
ListItem4 = Intent.getStringExtra("ListItem4"); 
ListItem5 = Intent.getStringExtra("ListItem5"); 

в

Intent OpenList = getIntent(); 
ListItem1 = OpenList.getStringExtra("ListItem1"); 
ListItem2 = OpenList.getStringExtra("ListItem2"); 
ListItem3 = OpenList.getStringExtra("ListItem3"); 
ListItem4 = OpenList.getStringExtra("ListItem4"); 
ListItem5 = OpenList.getStringExtra("ListItem5"); 

Используйте Intent объект, который вы создали здесь

Intent OpenList = getIntent(); 

Так же, как и любой другой класс, используя Intent.getStringExtra("words"); зовёт его в static пути и если вы посмотрите на Intent DocsgetStringExtra(String name) не static метода, так что вы создаете экземпляр, если Intent с Intent OpenLIst = getIntent();

Кроме того, придерживаться стандартов программирования Java вы должны использовать в смешанный регистр для имен переменных так OpenList бы openList и ListItem1 бы listItem1. Это не является необходимым для компиляции, очевидно, но это хорошая идея, чтобы попытаться придерживаться стандартов

0

Когда вы пишете:

ListItem1 = Intent.getStringExtra("ListItem1"); 

Вы используете метод (т.е. getStringExtra(String name)) на классе (т.е. Intent) , который представляет собой подход static.

Вместо этого вы должны использовать метод для объекта (т. Е. OpenList) для нестатического подхода.

Таким образом, ваш код должен быть изменен на:

ListItem1 = OpenList.getStringExtra("ListItem1"); 

И быть применены к ListItem2, ListItem3, и так далее.

OpenList

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