java.lang.nullpointerexception试图调用方法';int java.util.List.size()';
主要活动 正在尝试添加谷歌地图,请尽快提供帮助java.lang.nullpointerexception试图调用方法';int java.util.List.size()';,java,exception,null,Java,Exception,Null,主要活动 正在尝试添加谷歌地图,请尽快提供帮助 import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.json.JSONObject; import android.app.ActionBar; import android.content.Intent; import android.graphics.Color; import android.os.AsyncTask
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.json.JSONObject;
import android.app.ActionBar;
import android.content.Intent;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.PolylineOptions;
import com.parse.ParseAnalytics;
import com.parse.ParseUser;
public class OnscreenActivity extends FragmentActivity {
private static final LatLng sydney = new LatLng(30.8894669, 75.8246729);
private static final LatLng connct = new LatLng(30.8914863, 75.874398);
GoogleMap googleMap;
final String TAG1 = "PathGoogleMapActivity";
public static final String TAG = OnscreenActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.fragment1);
googleMap = fm.getMap();
ParseAnalytics.trackAppOpened(getIntent());
ParseUser currentUser = ParseUser.getCurrentUser();
if (currentUser == null) {
navigateToLogin();
} else {
Log.i(TAG, currentUser.getUsername());
}
ActionBar actionbar = getActionBar();
actionbar.show();
MarkerOptions options = new MarkerOptions();
options.position(sydney);
options.position(connct);
googleMap.addMarker(options);
String url = getMapsApiDirectionsUrl();
ReadTask downloadTask = new ReadTask();
downloadTask.execute(url);
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(connct, 16));
addMarkers();
}
private void addMarkers() {
// TODO Auto-generated method stub
if (googleMap != null) {
googleMap.addMarker(new MarkerOptions().position(sydney).title(
"First Point"));
googleMap.addMarker(new MarkerOptions().position(connct).title(
"Second Point"));
}
}
private String getMapsApiDirectionsUrl() {
String waypoints = "waypoints=optimize:true|" + sydney.latitude + ","
+ sydney.longitude + "|" + "|" + connct.latitude + ","
+ connct.longitude;
String sensor = "sensor=false";
String params = waypoints + "&" + sensor;
String output = "json";
String url = "https://maps.googleapis.com/maps/api/directions/"
+ output + "?" + params;
return url;
}
private class ReadTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... url) {
String data = "";
try {
HttpConnection http = new HttpConnection();
data = http.readUrl(url[0]);
} catch (Exception e) {
Log.d("Background Task", e.toString());
}
return data;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
new ParserTask().execute(result);
}
}
private class ParserTask extends
AsyncTask<String, Integer, List<List<HashMap<String, String>>>> {
@Override
protected List<List<HashMap<String, String>>> doInBackground(
String... jsonData) {
JSONObject jObject;
List<List<HashMap<String, String>>> routes = null;
try {
jObject = new JSONObject(jsonData[0]);
PathJsonParser parser = new PathJsonParser();
routes = parser.parse(jObject);
} catch (Exception e) {
e.printStackTrace();
}
return routes;
}
@Override
protected void onPostExecute(List<List<HashMap<String, String>>> routes) {
ArrayList<LatLng> points = null;
PolylineOptions polyLineOptions = null;
// traversing through routes
for (int i = 0; i < routes.size(); i++) {
points = new ArrayList<LatLng>();
polyLineOptions = new PolylineOptions();
List<HashMap<String, String>> path = routes.get(i);
for (int j = 0; j < path.size(); j++) {
HashMap<String, String> point = path.get(j);
double lat = Double.parseDouble(point.get("lat"));
double lng = Double.parseDouble(point.get("lng"));
LatLng position = new LatLng(lat, lng);
points.add(position);
}
polyLineOptions.addAll(points);
polyLineOptions.width(2);
polyLineOptions.color(Color.BLUE);
}
googleMap.addPolyline(polyLineOptions);
}
}
private void navigateToLogin() {
Intent intent = new Intent(this, Login.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.map, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
if (itemId == R.id.action_logout) {
ParseUser.logOut();
navigateToLogin();
}
if (itemId == R.id.options) {
Intent intent = new Intent(this, UserOptions.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
return super.onOptionsItemSelected(null);
}
}
import java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入org.json.JSONObject;
导入android.app.ActionBar;
导入android.content.Intent;
导入android.graphics.Color;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v4.app.FragmentActivity;
导入android.util.Log;
导入android.view.Menu;
导入android.view.MenuItem;
导入com.google.android.gms.maps.CameraUpdateFactory;
导入com.google.android.gms.maps.GoogleMap;
导入com.google.android.gms.maps.SupportMapFragment;
导入com.google.android.gms.maps.model.LatLng;
导入com.google.android.gms.maps.model.MarkerOptions;
导入com.google.android.gms.maps.model.PolylineOptions;
导入com.parse.ParseAnalytics;
导入com.parse.ParseUser;
Creenactivity上的公共类扩展了碎片活动{
悉尼私人静态最终车床=新车床(30.8894669,75.8246729);
专用静态最终车床连接=新车床(30.8914863,75.874398);
谷歌地图谷歌地图;
最后一个字符串TAG1=“PathGoogleMapActivity”;
public static final String TAG=OnscreenActivity.class.getSimpleName();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
SupportMapFragment fm=(SupportMapFragment)getSupportFragmentManager()
.findFragmentById(R.id.fragment1);
googleMap=fm.getMap();
trackapponed(getIntent());
ParseUser currentUser=ParseUser.getCurrentUser();
if(currentUser==null){
导航登录();
}否则{
Log.i(标记,currentUser.getUsername());
}
ActionBar ActionBar=getActionBar();
actionbar.show();
MarkerOptions options=新的MarkerOptions();
选项.职位(悉尼);
选项。位置(connct);
googleMap.addMarker(选项);
字符串url=getMapsApiDirectionsUrl();
ReadTask downloadTask=新建ReadTask();
downloadTask.execute(url);
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(康涅狄格州,16));
添加标记();
}
私有void addMarkers(){
//TODO自动生成的方法存根
if(谷歌地图!=null){
googleMap.addMarker(新MarkerOptions().position(sydney).title(
“第一点”);
googleMap.addMarker(新标记选项().position(connct).title(
“第二点”);
}
}
私有字符串getMapsApiDirectionsUrl(){
String waypoints=“waypoints=optimize:true |“+sydney.latitude+”,”
+sydney.longide+“|”+“|”+connct.lation+”,”
+连接经度;
字符串sensor=“sensor=false”;
字符串参数=航路点+“&”+传感器;
字符串输出=“json”;
字符串url=”https://maps.googleapis.com/maps/api/directions/"
+输出+“?”+参数;
返回url;
}
私有类ReadTask扩展了AsyncTask{
@凌驾
受保护的字符串doInBackground(字符串…url){
字符串数据=”;
试一试{
HttpConnection http=新的HttpConnection();
data=http.readUrl(url[0]);
}捕获(例外e){
Log.d(“后台任务”,例如toString());
}
返回数据;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
新建ParserTask()。执行(结果);
}
}
私有类ParserTask扩展
异步任务{
@凌驾
受保护列表背景(
字符串…jsonData){
JSONObject jObject;
列表路由=空;
试一试{
jObject=新的JSONObject(jsonData[0]);
PathJsonParser parser=新的PathJsonParser();
routes=parser.parse(jObject);
}捕获(例外e){
e、 printStackTrace();
}
返回路线;
}
@凌驾
受保护的void onPostExecute(列出路由){
ArrayList points=null;
PolylineOptions PolylineOptions=null;
//穿越路线
对于(int i=0;i