0
你好, 我目前在Android中有我的主要活動。這就是所謂的開始活動。 我的programm被設計成可以從網上加載一個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)必須是一個活動或者我還能怎麼實現我的功能?
'新的FileInputStream( 「lunchfile」)'不應該從SD卡的根目錄讀取。請在'Activity'或其他上下文中使用'Environment.getExternalStorageDirectory()'作爲外部存儲器的根目錄(通常是SD卡)和'getFilesDir()'以獲取板載應用程序本地文件的位置閃。 – CommonsWare 2010-11-06 12:39:34
我存儲的文件直接存儲在移動設備上。這只是一個小小的XML文件。我剛剛買了你的書......希望我能從他們身上學到很多東西。 – theXs 2010-11-06 13:06:31
@CommonsWare:對不起,當我發佈我沒有訪問任何代碼,所以它只是從我的頭頂,我只是檢查自己的代碼,並在那裏我使用Environment.getExternalStorageDirectory(),(和getExternalStorageState() )。 – Anton 2010-11-06 15:23:20