別のスレッドでデータをダウンロードして解析するために AsyncTask を使用しています。loadXml によって返された値をデータベースに渡す必要があります。
問題は、コンテキストが必要であり、DownloadXmlTask がインスタンス化されるアクティビティ クラスとは別のクラスにあるため、データベースをインスタンス化できないことです。
データベース クラスをインスタンス化できない場合、値をデータベースに渡すにはどうすればよいですか?
コードサンプル:
public class DownloadXmlTask extends AsyncTask<String,Void,Void>{
public static final String TAG = "VotingApp";
@Override
protected Void doInBackground(String... urls) {
try {
// Get the parsed list of Candidate objects
ArrayList<Candidate> candidatesList = loadXml(urls[0]);
CandidatesDatabaseHelper db = new CandidatesDatabaseHelper(getApplicationContext()); <---- ERROR (I know I can't use getApplicationContext() here)
// Insert the candidates into the database
for(Candidate c : candidatesList){
//NOT FINISHED
}
} catch (IOException e) {
Log.d(TAG, "Error " + e);
} catch (XmlPullParserException e) {
Log.d(TAG, "Error " + e);
}
Log.d(TAG, "NOT WORKING");
return null;
}