2015-10-28 3 views
0

Я новичок в android. В моем приложении во время работы отображаются ошибки в logCat. Любая помощь приветствуется.Android Studio-E/AndroidRuntime: FATAL EXCEPTION: main -maps V2

Я назвал класс «Домашний» одним из разделов навигационного ящика. Когда я вставляю этот код, кажется, проблема.

Заранее спасибо.

Java код:

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.Marker; 
import com.google.android.gms.maps.model.MarkerOptions; 
import java.util.ArrayList; 
import java.util.HashMap; 

public class Home extends Fragment 
{ 
    private GoogleMap mMap; 
    private ArrayList<MyMarker> mMyMarkersArray = new ArrayList<MyMarker>(); 
    private HashMap<Marker, MyMarker> mMarkersHashMap; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     // Initialize the HashMap for Markers and MyMarker object 
     mMarkersHashMap = new HashMap<Marker, MyMarker>(); 

     mMyMarkersArray.add(new MyMarker("loc1", "icon1", Double.parseDouble("44.637564"), Double.parseDouble("-63.5753207"))); 
     mMyMarkersArray.add(new MyMarker("loc2", "icon2", Double.parseDouble("44.6462628"), Double.parseDouble("-63.5721407"))); 
     mMyMarkersArray.add(new MyMarker("loc3", "icon3", Double.parseDouble("44.6470678"), Double.parseDouble("-63.5747943"))); 
     mMyMarkersArray.add(new MyMarker("loc4", "icon4", Double.parseDouble("43.5643397"), Double.parseDouble("-65.5643972"))); 
     mMyMarkersArray.add(new MyMarker("loc5", "icon5", Double.parseDouble("44.6556674"), Double.parseDouble("-63.6056877"))); 
     mMyMarkersArray.add(new MyMarker("loc6", "icon6", Double.parseDouble("44.6892204"), Double.parseDouble("44.6892204"))); 
     mMyMarkersArray.add(new MyMarker("loc7", "icon7", Double.parseDouble("44.6367517"), Double.parseDouble("-63.5839683"))); 
     mMyMarkersArray.add(new MyMarker("loc8", "icondefault", Double.parseDouble("44.6508492"), Double.parseDouble("-63.592472"))); 

     setUpMap(); 

     plotMarkers(mMyMarkersArray); 
    } 

    private void plotMarkers(ArrayList<MyMarker> markers) 
    { 
     if(markers.size() > 0) 
     { 
      for (MyMarker myMarker : markers) 
      { 
       // Create user marker with custom icon and other options 
       MarkerOptions markerOption = new MarkerOptions().position(new LatLng(myMarker.getmLatitude(), myMarker.getmLongitude())); 
       markerOption.icon(BitmapDescriptorFactory.fromResource(R.drawable.smallicon1)); 
       Marker currentMarker = mMap.addMarker(markerOption); 
       mMarkersHashMap.put(currentMarker, myMarker); 
       mMap.setInfoWindowAdapter(new MarkerInfoWindowAdapter()); 
      } 
     } 
    } 

    private int manageMarkerIcon(String markerIcon) 
    { 
     if (markerIcon.equals("icon1")) 
      return R.drawable.smallicon1; 
     else if(markerIcon.equals("icon2")) 
      return R.drawable.smallicon1; 
     else if(markerIcon.equals("icon3")) 
      return R.drawable.smallicon1; 
     else if(markerIcon.equals("icon4")) 
      return R.drawable.smallicon1; 
     else if(markerIcon.equals("icon5")) 
      return R.drawable.smallicon1; 
     else if(markerIcon.equals("icon6")) 
      return R.drawable.smallicon1; 
     else if(markerIcon.equals("icon7")) 
      return R.drawable.smallicon1; 
     else 
      return R.drawable.smallicon1; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment_feedback, container, false); 
    } 

    private void setUpMap() 
    { 
     // Do a null check to confirm that we have not already instantiated the map. 
     if (mMap == null) 
     { 
      // Try to obtain the map from the SupportMapFragment. 
      mMap = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

      // Check if we were successful in obtaining the map. 

      if (mMap != null) 
      { 
       mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() 
       { 
        @Override 
        public boolean onMarkerClick(com.google.android.gms.maps.model.Marker marker) 
        { 
         marker.showInfoWindow(); 
         return true; 
        } 
       }); 
      } 
      else 
       Toast.makeText(getActivity().getApplicationContext(), "Unable to create Maps", Toast.LENGTH_SHORT).show(); 
     } 
    } 

    public class MarkerInfoWindowAdapter implements GoogleMap.InfoWindowAdapter 
    { 
     public MarkerInfoWindowAdapter() 
     { 
     } 

     @Override 
     public View getInfoWindow(Marker marker) 
     { 
      return null; 
     } 

     @Override 
     public View getInfoContents(Marker marker) 
     { 
      View v = getActivity().getLayoutInflater().inflate(R.layout.infowindow_layout, null); 

      MyMarker myMarker = mMarkersHashMap.get(marker); 

      ImageView markerIcon = (ImageView) v.findViewById(R.id.marker_icon); 

      TextView markerLabel = (TextView)v.findViewById(R.id.marker_label); 

      TextView anotherLabel = (TextView)v.findViewById(R.id.another_label); 

      markerIcon.setImageResource(manageMarkerIcon(myMarker.getmIcon())); 

      markerLabel.setText(myMarker.getmLabel()); 
      anotherLabel.setText("A custom text"); 

      return v; 
     } 
    } 

    public void onDestroy() 
    { 
     super.onDestroy(); 

    } 

    @Override 
    public void onDetach() 
    { 
     super.onDetach(); 
    } 
} 

TomCat:

10-28 17:06:11.301 13300-13300/com.example.chid.parktrial1 W/dalvikvm﹕ 
threadid=1: thread exiting with uncaught exception (group=0x4181cc08) 
10-28 17:06:11.306 13300-13300/com.example.chid.parktrial1 E/AndroidRuntime﹕ 
FATAL EXCEPTION: main Process: com.example.chid.parktrial1, PID: 13300 java.lang.RuntimeException: Unable to start activity ComponentInfo 
{com.example.chid.parktrial1/com.example.chid.parktrial1.SuperPark}: 
java.lang.NullPointerException 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2447) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2507) 
    at android.app.ActivityThread.access$900(ActivityThread.java:172) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:146) 
    at android.app.ActivityThread.main(ActivityThread.java:5692) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
    at com.example.chid.parktrial1.Home.setUpMap(Home.java:149) 
    at com.example.chid.parktrial1.Home.onCreate(Home.java:87) 
    at android.support.v4.app.Fragment.performCreate(Fragment.java:1942) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1040) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1259) 
    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1624) 
    at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330) 
    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547) 
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1177) 
    at android.app.Activity.performStart(Activity.java:5551) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2420) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2507) 
    at android.app.ActivityThread.access$900(ActivityThread.java:172) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:146) 
    at android.app.ActivityThread.main(ActivityThread.java:5692) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 
    at dalvik.system.NativeStart.main(Native Method) 
10-28 17:06:14.401 13300-13300/com.example.chid.parktrial1 I/Process﹕ Sending signal. PID: 13300 SIG: 9 
+0

Я представил правку на ваш вопрос, но это не может быть принято сразу же, чтобы вы могли сделать это самостоятельно. Неправильное форматирование для вашего кода. Люди, как правило, занимаются вопросами гораздо более серьезно, когда они должным образом отформатированы. –

ответ

0

не в состоянии комментировать делает его очень трудно указать на мелкие вещи, которые могут быть достигнуты в комментариях.

PS: Отформатируйте вопрос правильно, чтобы лучше понять проблему

В любом случае, добавить LayoutInflater и раздувать View с помощью Layoutinflater в методе getInfoComponents(). Поскольку вы определяете представление во фрагменте.

public class Home extends Fragment{ 

    LayoutInflater inflater=null; 



    ... 

    public class MarkerInfoWindowAdapter implements GoogleMap.InfoWindowAdapter { 

     // constuctor 
     public MarkerInfoWindowAdapter(LayoutInflater inflater) { 
      this.inflater=inflater; 
     } 

     @Override 
     public View getInfoContents(Marker marker) { 
      View v = inflater.inflate(R.layout.infowindow_layout, null); 

      } 
     } 

} 

Используйте LayoutInflater раздувать View в getInfoComponents()