私は次のコードを持っています:
public class TestSynch extends Activity {
public static ArrayList<HashMap<String,String>> list;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Context ctx = this.getApplicationContext();
new ProcessFileTask().execute(ctx);
Intent i = new Intent(TestSynch.this, ListSchools.class);
i.setAction(Intent.ACTION_VIEW);
i.putExtra("arraylist", list);
startActivity(i);
}
private class ProcessFileTask extends AsyncTask<Context, Void, ArrayList<HashMap<String,String>>> {
@Override
protected ArrayList<HashMap<String,String>> doInBackground(Context... ctx) {
ArrayList<HashMap<String,String>> threadList = FileOperations.getListAsMaps(ctx[0]);
return threadList;
}
@Override
protected void onPostExecute(ArrayList<HashMap<String,String>> result) {
list = result;
return;
}
}
リターンthreadListにデバッグできます。doInBackgroundの行であり、ArrayList変数threadListは完全に正しいです。
ただし、onPostExecuteが呼び出されていないようで、doInBackgroundから戻るとActivityがクラッシュし、LogCatがインテントを起動しようとしているnullPointerExceptionを示唆しています(AsynchTaskをいじり始める前にテストして正常に動作しました)
なぜこれが起こっているのか考えていますか?コードは十分に単純なようです...
ありがとう