安卓将一个方法从主活动类调用到非活动类java。lang.RuntimeException
大家好, 我在MainActivity java中有一个方法,它将标记googlemap片段中的位置,但是当我从非活动类调用该方法时,它会给我一个错误
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
我能做标记的主要活动方法是
public void addMarkers(Double lat, Double lng, String name){
MarkerOptions options = new MarkerOptions()
.title(name)
.position(new LatLng(lat, lng));
mGoogleMap.addMarker(options);
}
我调用该方法的非活动类是
private int parseDataTag(){
try {
JSONArray ja = new JSONArray(jsonData);
JSONObject jo = null;
AdvanceSearch advanceSearch = new AdvanceSearch(); //MainActivity class
for(int i=0;i<ja.length();i++){
jo=ja.getJSONObject(i);
int id = jo.getInt("id");
String name = jo.getString("name");
String lat = jo.getString("latitude");
String lng = jo.getString("longtitude");
advanceSearch.addMarkers(Double.parseDouble(lat), Double.parseDouble(lng), name);
}
return 1;
} catch (JSONException e) {
e.printStackTrace();
}
return 0;
}
# 1 楼答案
不能像普通Java类那样创建活动的对象,因为活动必须经历活动生命周期才能获得有效的上下文
相反,您可以创建一个接口侦听器来帮助您与活动进行通信
您可以找到如何执行此操作here
# 2 楼答案
您应该使用已有的上下文在活动中调用您的方法