你好 我目前在Android上有我的主要活动。它被称为开始活动。 我的程序设计是为了从Web加载XML文件并解析它。
现在将来我想要添加程序加载XML文件的能力,而不是每次运行时解析它从SQLLite数据库加载数据。
然而,为此,我需要编写一个封装不同功能的界面。
如果需要使用XML,我给我写了一个小类,它应该涵盖XML加载 - 但我不能使用openFileInput(...)...因为该类不是一个活动(它是否需要是一个??)。
package com.android.mensa.handledata;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.TreeMap;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import android.app.Activity;
import com.android.mensa.datastructure.LunchPlace;
import com.android.mensa.getData.XMLHandler;
import com.android.mensa.interfaces.Data;
/**
* This class implements the interface Data
* and gathers the necessary informations out of the XML File on the actual device.
*/
public class XMLData implements Data{
@Override
public void getMenuforDay() {
// TODO Auto-generated method stub
}
public TreeMap<String, LunchPlace> open()
{
File test = new File("lunchfile");
FileInputStream fis;
TreeMap<String, LunchPlace> places = new TreeMap<String, LunchPlace>();
try {
fis = openFileInput("lunchfile");
XMLHandler xmlhandler = new XMLHandler();
places = xmlhandler.parse(fis);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return places;
}
}
我想我的问题非常基本:XMLhandler助手类(应该返回TreeMap)需要是一个活动还是我还能如何实现我的功能?
答案 0 :(得分:1)
在我的头脑中,我可以想到两种方法:
第一个是使用:
FileInputStream fis = new FileInputStream("lunchfile");
然而,这将从SD卡的根目录读取“午餐文件”文件,我并不确定这是否是您想要的,但如果您这样做,我建议更改它“/ yourapplication /午餐文件“而不是。
另一种方法是将活动传递给读者类。
public TreeMap<String, LunchPlace> open(Context activity)
{
[...]
fis = activity.openFileInput("lunchfile");
[...]
}
希望有所帮助:)