Android 尝试调用getMapAsync()方法时应用程序崩溃

Android 尝试调用getMapAsync()方法时应用程序崩溃,android,mysql,google-maps,google-maps-markers,Android,Mysql,Google Maps,Google Maps Markers,很抱歉重复了这个问题,但我无法从前面的问题中得到答案。我想从谷歌地图上的mysql映射GPS(纬度、经度)。我从mysql获得了lat和long,但当我试图在谷歌地图上映射它时,我的应用程序崩溃了。我试了很多,但都不管用。它回来了 空对象引用 logcat中的错误。以前的空对象引用可能不存在 我的班级代码在这里 public class RecGPS extends AppCompatActivity{ private GoogleMap mMap; Button btn;

很抱歉重复了这个问题,但我无法从前面的问题中得到答案。我想从谷歌地图上的mysql映射GPS(纬度、经度)。我从mysql获得了lat和long,但当我试图在谷歌地图上映射它时,我的应用程序崩溃了。我试了很多,但都不管用。它回来了

空对象引用

logcat中的错误。以前的空对象引用可能不存在

我的班级代码在这里

    public class RecGPS extends AppCompatActivity{
private GoogleMap mMap;


    Button btn;
    private ProgressDialog loading;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_rec_gps);


        btn = (Button) findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                recGps();
            }
        });
    }

    private void recGps() {


        loading = ProgressDialog.show(this, "Please wait ......", "fetching....", false, false);
        String url = Config.URL_CARD_INFO;
        StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                loading.dismiss();
                showJSON(response);
            }

        },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(RecGPS.this, error.getMessage().toString(), Toast.LENGTH_LONG).show();
                    }
                });
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
    }

    private void showJSON(String response) {
        String latitude = "";
        String longitude = "";


        try {
            JSONObject jsonObject = new JSONObject(response);
            JSONArray result = jsonObject.getJSONArray(Config.TAG_JSON_ARRAY);
            JSONObject collegeData = result.getJSONObject(0);
            latitude = collegeData.getString(Config.TAG_ISSUE_DATE);
            longitude = collegeData.getString(Config.TAG_Expiry_DATE);



        } catch (JSONException e) {
            e.printStackTrace();
        }

Toast.makeText(this,latitude+longitude,Toast.LENGTH_LONG).show();
//        ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMapAsync(this);


        ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMapAsync(new OnMapReadyCallback() {
            @Override
            public void onMapReady(GoogleMap googleMap) {
                mMap=googleMap;
            }
        });
    mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(longitude), Double.parseDouble(latitude))));



}

}

地图准备就绪后添加标记,如中所示

((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMapAsync(new OnMapReadyCallback() {
            @Override
            public void onMapReady(GoogleMap googleMap) {
                mMap=googleMap;
                mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(longitude), Double.parseDouble(latitude))));
            }
        });

NullPointerException
是由以下原因引起的:

((MapFragment) getFragmentManager().findFragmentById(R.id.map))
尝试使用
SupportMapFragment
而不是
getFragmentManager

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

@Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(longitude), Double.parseDouble(latitude))));
    }

将您的logcat报告pleaseAdd崩溃日志添加到问题中,您的
onMapReady()
方法和其他Google地图生命周期方法在哪里?无意冒犯,但这代码有味道。我的建议:添加断点并精确定位代码崩溃的位置。@Oussemaroua请立即检查它的可能副本是否正在工作,但现在问题出在addMarker中。Plz指南如何解决它
mMap.addMarker(新的MarkerOptions().position(新的LatLng(Double.parseDouble(经度)、Double.parseDouble(纬度)))
((MapFragment) getFragmentManager().findFragmentById(R.id.map))
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

@Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(longitude), Double.parseDouble(latitude))));
    }