从主活动类调用方法到非活动类java.lang.RuntimeException

时间:2017-09-19 08:54:13

标签: java android class methods

好日子,伙计们, 我的MainActivity java中有一个方法可以标记googlemap片段中的位置,但是当我从非活动类调用该方法时,它会给我一个错误

  

java.lang.RuntimeException:无法在线程内创建处理程序   没有调用Looper.prepare()

我可以制作标记的mainActivity方法是

public void addMarkers(Double lat, Double lng, String name){
    MarkerOptions options = new MarkerOptions()
            .title(name)
            .position(new LatLng(lat, lng));
    mGoogleMap.addMarker(options);
}

我调用该方法的非Activity类是

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;
}

2 个答案:

答案 0 :(得分:1)

您无法像普通Java类一样创建活动对象,因为活动必须经过活动生命周期才能获得有效的上下文。

相反,你可以创建一个界面监听器来帮助你回复你的活动。

您可以了解如何执行此操作here

答案 1 :(得分:-1)

您应该使用您拥有的上下文在您的活动中调用您的方法。

 ((MainActivity) context).yourMethod();