无法从其他方法调用此方法

时间:2013-12-21 05:44:57

标签: android google-maps google-maps-markers latitude-longitude

这是我的方法,要求GPS坐标。它可以使用GUI上的按钮onclick工作得很好。但每当我尝试从其他方法调用它时,它都会使我的应用程序崩溃。

public void getPattern(View v){
    String s = "http://maps.google.com/maps?f=q&hl=en&q=05.445560,100.424200&ie=UTF8&z=16&iwIoc=addr&om=1speed:000.0&imei=355689019472548";
   // String s = messageBox.getText().toString();
  //  Log.d("check", s);
    Pattern p = Pattern.compile("\\d+\\.\\d+");
    Matcher m = p.matcher(s);
    int i =0;
    Float n[] = new Float[4];
        while (m.find()) {
               System.out.println(m.group());
               n[i]= Float.parseFloat(m.group());
               i++;
            }

            LatLng locLatLng = new LatLng(n[0],n[1]);
            CameraPosition cameraPosition = new CameraPosition.Builder().target(locLatLng).zoom(15).build();
            googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
            MarkerOptions marker = new MarkerOptions().position(locLatLng).title("Here's your car dude!!!").snippet("Found it!!");
            marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
            googleMap.addMarker(marker).showInfoWindow();

}

到目前为止从LatLng开始的错误。如果我删除了这段代码,当然还有(View v)并从main方法调用,例如getPattern();它工作得很好但是我需要其余的LatLng代码,这样它就可以自动从提取的Lat中获取位置long字符串s。 n变量正确捕获了lat长数据。

我的意思是我想从代码中调用此方法,例如在onCreate或其他地方,而不与按钮或任何GUI元素交互。例如我有这个方法

public static void updateMessageBox(String msg) { 
    messageBox.setText(msg); 
    getPattern(); 
}

这导致我的应用程序崩溃。如果我之后删除了LatLng代码,那么它可以正常运行并删除(View v)

1 个答案:

答案 0 :(得分:0)

如果您想调用按钮 onClick 功能,请将内容放入新method,然后在 onClick 功能中调用该功能。

public void getPattern(View v){

    getPatternmatch();
    }



    public void getPatternmatch(){
        String s = "http://maps.google.com/maps?f=q&hl=en&q=05.445560,100.424200&ie=UTF8&z=16&iwIoc=addr&om=1speed:000.0&imei=355689019472548";
       // String s = messageBox.getText().toString();
      //  Log.d("check", s);
        Pattern p = Pattern.compile("\\d+\\.\\d+");
        Matcher m = p.matcher(s);
        int i =0;
        Float n[] = new Float[4];
            while (m.find()) {
                   System.out.println(m.group());
                   n[i]= Float.parseFloat(m.group());
                   i++;
                }

                LatLng locLatLng = new LatLng(n[0],n[1]);
                CameraPosition cameraPosition = new CameraPosition.Builder().target(locLatLng).zoom(15).build();
                googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
                MarkerOptions marker = new MarkerOptions().position(locLatLng).title("Here's your car dude!!!").snippet("Found it!!");
                marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
                googleMap.addMarker(marker).showInfoWindow();

    }