То, что я пытаюсь сделать, должно быть простым: Я пытаюсь использовать Android Studio для чтения XML-файла и записи данных в базу данных.Java - Нестатический метод не может ссылаться из статического контекста
упрощенная версия моего кода выглядит следующим образом:
MainActivity.java:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
try {
XMLReader r = new XMLReader();
r.Reader(getXML());
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//Creates each station
public void newStation(int stationID, String stationName)
{
DBHandler dbHandler = new DBHandler(this, null, null, 1);
Station station = new Station(stationID, stationName);
dbHandler.addStation(station);
}
private String getXML()
{
//code to get xml
return xml;
}
}
XMLReader.java:
public class XMLReader {
public void Reader (String xmlFile) throws XmlPullParserException, IOException
{
String[] stationData = new String[]{"",""};
//code to cut xml file up and put it into stationData
MainActivity.newStation(Integer.parseInt(stationData[0]), stationData[1]);
}
}
(Если вы хотите, я могу добавить код station.java и DBHandler.java)
Теперь проблема, которую я испытываю, заключается в следующем: «Нестатический метод« newStation (int, java.lang.String) »не может ссылаться на статический контекст»
и предложение подсказывает мне сделать статичность newStation, однако если я делаю это, то я получаю этот вопрос:»... MainActivity.this' нельзя ссылаться из статического контекста"
с предложением, говоря мне сделать Newstation не статическую ...
Что касается поскольку я могу сказать, что newStation должна быть статичной для того, чтобы передать мне переменные, однако я не могу использовать контекст «это» в статическом классе. Я попытался создать контекст, но мне казалось, что он пытается выкопать себя из ямы.
Как я могу обойти этот парадокс программирования? Обычно я могу найти ответ на любой вопрос здесь, но это первый раз, когда я не мог. Если вы знаете ссылку на решение, которое я пропустил, отправьте его ниже. Большое спасибо.
Где вы определили класс XMLReader в том же классе Activity ??? – Pankaj
И вы не можете вызвать метод класса Activity, такой как YourActivity.YouActivityMethod() – Pankaj
Возможный дубликат [В чем причина «нестатического метода нельзя ссылаться из статического контекста»?) (Http://stackoverflow.com/ Вопросы/290884/what-is-the-reason-behind-non-static-method-not-be-reference-from-a-static) – Cristik