我有以下代码:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以调试返回threadList; 在doInBackground中的行,并且ArrayList变量threadList是完全正确的.
但是,onPostExecute似乎没有被调用,并且从doInBackground返回时Activity崩溃,LogCat建议尝试触发Intent的nullPointerException(我之前测试过并且在我开始搞乱AsynchTask之前工作正常)
知道为什么会这样吗?代码看起来很简单......
谢谢
您需要在Async的onPostExecute方法中移动startActivity部分.
例如:
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);
}
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) {
Intent i = new Intent(TestSynch.this, ListSchools.class);
i.setAction(Intent.ACTION_VIEW);
i.putExtra("arraylist", result);
startActivity(i);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
779 次 |
| 最近记录: |