method 'java.lang.String java.lang.String.trim()' on a null object refere

r1374065 2017-05-24 03:11:22
新手求助
5-24 02:49:39.422 29044-29044/baidumapsdk.demo E/AndroidRuntime: FATAL EXCEPTION: main
Process: baidumapsdk.demo, PID: 29044
java.lang.RuntimeException: Unable to start activity ComponentInfo{baidumapsdk.demo/baidumapsdk.demo.map.OverlayDemo}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.trim()' on a null object reference


package baidumapsdk.demo.map;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.SeekBar;
import android.widget.Toast;

import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BaiduMap.OnMarkerClickListener;
import com.baidu.mapapi.map.BaiduMap.OnMarkerDragListener;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.GroundOverlayOptions;
import com.baidu.mapapi.map.InfoWindow;
import com.baidu.mapapi.map.InfoWindow.OnInfoWindowClickListener;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.Marker;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.MarkerOptions.MarkerAnimateType;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.model.LatLngBounds;
import com.baidu.mapapi.utils.SpatialRelationUtil;

import org.json.JSONArray;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

import baidumapsdk.demo.BMapApiDemoMain;
import baidumapsdk.demo.R;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

/**
* 演示覆盖物的用法
*/
public class OverlayDemo extends Activity {

/**
* MapView 是地图主控件
*/

private String array[][] = new String[1000][9];
private MapView mMapView;
private BaiduMap mBaiduMap;
private Marker[] mMarker;


private void sendRequestWithOkHttp(){
new Thread(new Runnable() {
@Override
public void run() {
try {
OkHttpClient client=new OkHttpClient();
Request request= new Request.Builder()
.url("http://api.map.baidu.com/geodata/v3/poi/list?geotable_id=168402&page_size=200&ak=pgzsdGsmgmlPj55SP0BRVzk2oAvjjHcj")
.build();
Response response = client.newCall(request).execute();
String responseData=response.body().string();
if(response.isSuccessful()){
Log.d("OKHttp",responseData);

}


//if(!TextUtils.isEmpty(responseData)){
parseJSONWithJSONObject(responseData);

}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
private void showResponse(final String response){
runOnUiThread(new Runnable() {
@Override
public void run() {
}
});
}

public void parseJSONWithJSONObject(String jsonData){

try {
JSONObject jsonObject=new JSONObject(jsonData);
JSONArray jsonArray=jsonObject.getJSONArray("pois");

for(int i=0;i<array.length;i++){
JSONObject sonObject=jsonArray.getJSONObject(i);

;

String id= sonObject.getString("id");
String address=sonObject.getString("address");
String province=sonObject.getString("province");
String city=sonObject.getString("city");
//String create_time=sonObject.getString("create_time");
String location=sonObject.getString("location");
//String gcj_location=sonObject.getString("gcj_location");
String radii=sonObject.getString("radii");
String level=sonObject.getString("level");
String hazard=sonObject.getString("hazard");

String id1= location.substring(1,location.lastIndexOf(","));
String id2= location.substring(location.lastIndexOf(",")+1,location.length()-1);
array[i][0]=id;
array[i][1]=address;
array[i][2]=province;
array[i][3]=city;
array[i][4]=id1;
array[i][5]=id2;
array[i][6]=radii;
array[i][7]=level;
array[i][8]=hazard;


Log.d("OverlayDemo",address);
Log.d("OverlayDemo",province);
Log.d("OverlayDemo",city);

Log.d("OverlayDemo",id);

Log.d("OverlayDemo",location);

Log.d("OverlayDemo",radii);
Log.d("OverlayDemo",level);
Log.d("OverlayDemo",hazard);


}


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



// 初始化全局 bitmap 信息,不用时及时 recycle

BitmapDescriptor bdGround = BitmapDescriptorFactory
.fromResource(R.drawable.ground_overlay);

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_overlay);



mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(14.0f);
mBaiduMap.setMapStatus(msu);

sendRequestWithOkHttp();
//initOverlay();
mMarker=new Marker[array.length];
for (int i=0;i<array.length;i++){
double longitude= Double.parseDouble(array[i][4]);
double latitude= Double.parseDouble(array[i][5]);

LatLng latLng=new LatLng(latitude,longitude);
OverlayOptions radpacketC = new MarkerOptions().position(latLng).icon(bdGround);
mMarker[i] = (Marker) (mBaiduMap.addOverlay(radpacketC));
}
mBaiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {
public boolean onMarkerClick(final Marker marker) {


ArrayList<LatLng> latlist = new ArrayList<LatLng>();

// ArrayList lable = new ArrayList();
//取到所有经纬度
for (int k = 0; k < array.length; k++) {
double lat=Double.parseDouble(array[k][5]);double lng=Double.parseDouble(array[k][4]);
LatLng allLat = new LatLng(lat, lng);
latlist.add(allLat);
}
//循环所有覆盖物
for (int i = 0; i < array.length; i++) {
//判断点击的覆盖物
if (marker == mMarker[i]) {
//获取点击的这个覆盖物的经纬
double lat=Double.parseDouble(array[i][5]);double lng=Double.parseDouble(array[i][4]);
// LatLng clicklat = new LatLng(lat, lng);
//移除点击的这个覆盖物的经纬度
latlist.remove(i);
//boolean is = false;
//判断点击的覆盖物是否被重叠


}
}

return true;

}
});
}



/**
* 清除所有Overlay
*
* @param view
*/
public void clearOverlay(View view) {
mBaiduMap.clear();
/* mMarkerA = null;
mMarkerB = null;
mMarkerC = null;
mMarkerD = null;*/
}

/**
* 重新添加Overlay
*
* @param view
*/
public void resetOverlay(View view) {
//clearOverlay(null);
// initOverlay();
}

/* private class SeekBarListener implements SeekBar.OnSeekBarChangeListener {

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
// float alpha = ((float) seekBar.getProgress()) / 10;
if (mMarkerA != null) {
mMarkerA.setAlpha(alpha);
}
if (mMarkerB != null) {
mMarkerB.setAlpha(alpha);
}
if (mMarkerC != null) {
mMarkerC.setAlpha(alpha);
}
if (mMarkerD != null) {
mMarkerD.setAlpha(alpha);
}
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}

}*/

@Override
protected void onPause() {
// MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()
mMapView.onPause();
super.onPause();
}

@Override
protected void onResume() {
// MapView的生命周期与Activity同步,当activity恢复时需调用MapView.onResume()
mMapView.onResume();
super.onResume();
}

@Override
protected void onDestroy() {
// MapView的生命周期与Activity同步,当activity销毁时需调用MapView.destroy()
mMapView.onDestroy();
super.onDestroy();
// 回收 bitmap 资源

bdGround.recycle();
}

}
...全文
1335 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
哎,真难 2017-05-24
  • 打赏
  • 举报
回复
空指针了噻,有控件没有赋值
r1374065 2017-05-24
  • 打赏
  • 举报
回复
r1374065 2017-05-24
  • 打赏
  • 举报
回复
引用 4 楼 wenwei19861106 的回复:
你的字符串是空的怎么能调用trim函数呢 找到报错哪行 改掉
我没用trim函数啊 只有一个这个String id1= location.substring(1,location.lastIndexOf(",")); 安装到手机里 点开程序直接崩溃了 好像没有说哪一行 大神帮我看看array[][]这个数组是不是用错了 05-24 14:22:08.503 6920-6920/baidumapsdk.demo E/AndroidRuntime: FATAL EXCEPTION: main Process: baidumapsdk.demo, PID: 6920 java.lang.RuntimeException: Unable to start activity ComponentInfo{baidumapsdk.demo/baidumapsdk.demo.map.OverlayDemo}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.trim()' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2423) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483) at android.app.ActivityThread.access$900(ActivityThread.java:153) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5438) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.trim()' on a null object reference at java.lang.StringToReal.parseDouble(StringToReal.java:263) at java.lang.Double.parseDouble(Double.java:301) at baidumapsdk.demo.map.OverlayDemo.onCreate(OverlayDemo.java:199) at android.app.Activity.performCreate(Activity.java:6303) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483)  at android.app.ActivityThread.access$900(ActivityThread.java:153)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5438)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629) 
南瓜饼 2017-05-24
  • 打赏
  • 举报
回复
你的字符串是空的怎么能调用trim函数呢 找到报错哪行 改掉
r1374065 2017-05-24
  • 打赏
  • 举报
回复
引用 2 楼 heaimnmn 的回复:
空指针了噻,有控件没有赋值
版主大人能不能帮忙看看jdon解析的数据放到数组拿出来用有没有问题 哪个控件没赋值

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧