gpt4 book ai didi

java - 将 Double 的 ArrayList 传递给另一个类

转载 作者:行者123 更新时间:2023-11-29 21:33:43 25 4
gpt4 key购买 nike

我一直在寻找一些帮助,过去几天我一直在尝试将 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() 之前实例化,这就是为什么我认为最好将数组传递回主要 Activity ,然后传递给 proxAlert.class

最佳答案

您得到的异常是在调用 Activity 的 onCreate() 之前尝试在 ProxAlert Activity 中获取系统服务的结果。您的 AsyncTask 不遵守 Activity 生命周期。您不能使用 new 实例化 Activity 。

如果你想使用其他 Activity ,那么你必须按照这篇文章中描述的方式使用 Intent :Pass ArrayList<Double> from one activity to another activity on android

关于java - 将 Double 的 ArrayList 传递给另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18857577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com