我想要做的應該很簡單: 我試圖使用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需要是靜態的,以便將變量傳遞給它,但是我不能在靜態類中使用上下文「this」。我試圖創建一個上下文,但感覺就像試圖挖掘自己的洞。
我該如何解決這個編程悖論?我通常能夠在這裏找到任何問題的答案,但這是我第一次不能。如果您知道與我錯過的解決方案的鏈接,請在下面發佈。非常感謝。
您在相同的Activity類中定義了「XMLReader」類的位置? – Pankaj
而且你不能調用一個Activity類的方法,比如YourActivity.YouActivityMethod() – Pankaj
[可能的原因是「無法從靜態上下文中引用非靜態方法」的原因是什麼?](http://stackoverflow.com/問題/ 290884 /這是什麼原因背後的非靜態方法,不能從靜態引用) – Cristik