有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓将一个方法从主活动类调用到非活动类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;
}

共 (2) 个答案

  1. # 1 楼答案

    不能像普通Java类那样创建活动的对象,因为活动必须经历活动生命周期才能获得有效的上下文

    相反,您可以创建一个接口侦听器来帮助您与活动进行通信

    您可以找到如何执行此操作here

  2. # 2 楼答案

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

     ((MainActivity) context).yourMethod();