我有2个Java文件(CreateMyDb.java,ReadfromAssets.java)。 在ReadfromAssets.java中,我有以下代码。
如果我想从CreateMyDb.java调用ReadFileFromAssets方法,我应该如何调用,我应该传递的上下文参数是什么?我正在尝试使它工作但是徒劳无功。 感谢
public class ReadFromAssets extends Activity {
private static final String splitBy = ",";
private static int ID_Count = 6;
private static final String ObjName = "Question";
private static String NewObjName = "";
public void ReadFileFromAssets(Context myContext) {
//read from assets
myContext.getAssets();
AssetManager assetManager = myContext.getAssets();
InputStreamReader is = null;
try {
is = new InputStreamReader(assetManager.open("questions.csv"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedReader reader = new BufferedReader(is);
try {
reader.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String line;
try {
while ((line = reader.readLine()) != null) {
NewObjName = ObjName+ID_Count;
String[] QDetails = line.split(splitBy);
Question NewObjName=new Question(QDetails[0],QDetails[1],QDetails[2],QDetails[3],QDetails[4],QDetails[5], QDetails[6]);
CreateMyDb db=new CreateMyDb (this);
db.AddToDB(NewObjName);
ID_Count = ID_Count+1;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//use assets however
}
}
在CreateMyDb.java文件中,我调用的方法与
相同 private void addQuestions(){
ReadFromAssets ReadCsv = new ReadFromAssets();
ReadCsv.ReadFileFromAssets();//what should I pass as context here?
}
答案 0 :(得分:0)
最中级的解决方案是将您的活动的上下文传递给此类。这可能吗?
如果您不想传递参数,可以创建一个Application类,以便随时随地获取应用程序的上下文。
public class ApplicationClass extends Application
{
private static ApplicationClass myAppClass;
@Override
public void onCreate()
{
super.onCreate();
myAppClass = this;
}
public static ApplicationClass getMyAppClass()
{
return myAppClass;
}
}
然后,您必须在标签
下的ManifestFile中添加下一行android:name="com.yourapp.ApplicationClass"
现在,您可以在不传递任何上下文的情况下调用方法 ApplicationClass.getMyAppCLass()。getAssets()。
我必须说在这种情况下,Application类没有以正确的方式使用。这个类类型用于保持应用程序状态,但这是我能想到的唯一方法,可以在不传递任何参数的情况下做你想做的事。
答案 1 :(得分:0)
传递您正在访问此类方法的该类的上下文 ReadCsv.ReadFileFromAssets(CreateMyDb.this); 如果CreateMyDb类从activity或fragementactivity扩展,它显然也有该活动的上下文,所以传递你正在访问的类的上下文谢谢你可以帮助你