我正在寻找一些帮助,我花了最近几天试图将ArrayList of Doubles
从AsyncTask传递到另一个类,但没有成功,我现在认为我应该将数组传递回mainActivity和然后从那里运行到ProxAlert类。这是做到这一点的方式还是让我复杂化?谢谢你的帮助。
try{
ArrayList<LatLonPair> nPosition = new ArrayList<LatLonPair>();
JSONArray jArray = new JSONArray(result);
System.out.println("Length"+ jArray.length());
Log.d("DB","Length"+jArray.length());
for(int i=0; i<jArray.length(); i++){
JSONObject json_data = null;
json_data = jArray.getJSONObject(i);
int eventID = i +1;
String title = json_data.getString("Title");
double latitude = json_data.getDouble("Lat");
double longitude = json_data.getDouble("Lon");
LatLonPair p = new LatLonPair(latitude , longitude);
nPosition.add(p);
//System.out.println(eventID+"&"+latitude+"&"+longitude);
System.out.println("this" + p.printPoints());
}
}
catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
Log.e("log_tag","Failed data as:\n"+result);
}
return nPosition;
}
@Override
protected void onPostExecute(ArrayList<LatLonPair> result) {
new ProxAlert().registerIntents(result);
super.onPostExecute(result);
//Intent i = new Intent();
//i.putParcelableArrayListExtra("nPositon",(ArrayList<LatLonPair>) result);
//startARActivity();
}
我把它转移到主线程,但我必须让它成为Parcelable,我只是不确定是最直接的方法。抱歉,我得到的错误是
09-18 12:27:16.605: E/AndroidRuntime(20122): java.lang.IllegalStateException: System services not available to Activities before onCreate()
09-18 12:27:16.605: E/AndroidRuntime(20122): at android.app.Activity.getSystemService(Activity.java:3562)
09-18 12:27:16.605: E/AndroidRuntime(20122): at com.example.test.ProxAlert.setProximityAlert(ProxAlert.java:51)
09-18 12:27:16.605: E/AndroidRuntime(20122): at com.example.test.ProxAlert.registerIntents(ProxAlert.java:37)
09-18 12:27:16.605: E/AndroidRuntime(20122): at com.example.test.retrieveDB.onPostExecute(retrieveDB.java:116)
09-18 12:27:16.605: E/AndroidRuntime(20122): at com.example.test.retrieveDB.onPostExecute(retrieveDB.java:1)
09-18 12:27:16.605: E/AndroidRuntime(20122): at android.os.AsyncTask.finish(AsyncTask.java:417)
09-18 12:27:16.605: E/AndroidRuntime(20122): at android.os.AsyncTask.access$300(AsyncTask.java:127)
09-18 12:27:16.605: E/AndroidRuntime(20122): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
它在onCreate()之前实例化,这就是为什么我认为最好将数组传递回主活动然后传递给proxAlert.class
答案 0 :(得分:2)
您获得的异常是在调用活动的onCreate()之前尝试在ProxAlert
活动中获取系统服务的结果。您的AsyncTask
不尊重活动生命周期。您无法使用new
实例化活动。
如果您想使用其他活动,则必须按照本文中描述的方式使用Intents:Pass ArrayList<Double> from one activity to another activity on android