【发布时间】:2015-06-07 06:17:21
【问题描述】:
我想要做的应该很简单: 我正在尝试使用 Android Studio 读取 XML 文件并将数据写入数据库。
我的代码的简化版本如下:
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类的地方??? -
而且你不能调用像YourActivity.YouActivityMethod()这样的Activity类的方法
标签: java android database static