2017-10-27 3 views
1

Hey Leute, ich habe versucht, Google Map in einem Fragment zu verwenden und ich sah einige Tutorials und sie alle Fragment-Aktivität nicht fragment.So ich versuchte mit dem gleichen Code in Fragment.aber ich bekomme Dieser Fehler Fehler: Ausführung fehlgeschlagen für Task ': app: transformClassesWithDexForDebug'.google Map in Fragment DexIndexOverflowException Fehler

com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

unten ist mein Code des Fragments

public class MapsActivity extends Fragment implements OnMapReadyCallback { 
// TODO: Rename parameter arguments, choose names that match 
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER 
private static final String ARG_PARAM1 = "param1"; 
private static final String ARG_PARAM2 = "param2"; 

// TODO: Rename and change types of parameters 
private String mParam1; 
private String mParam2; 
MapView mapView; 
private GoogleMap mMap; 
private FusedLocationProviderClient mFusedLocationClient; 
private OnFragmentInteractionListener mListener; 

............. eines festen Code in Fragmente (havent etwas geändert)

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View view= inflater.inflate(R.layout.fragment_maps, container, false); 
    mapView = (MapView)view.findViewById(R.id.MapView); 

    mapView.onCreate(savedInstanceState); 
    mapView.onResume(); 
    mapView.getMapAsync(this); 
    // SupportMapFragment mapFragment = 
    (SupportMapFragment)getChildFragmentManager() 
//   .findFragmentById(R.id.MapView); 
// mapFragment.getMapAsync(this); 

    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.fragment_maps, container, false); 
} 

..................(some code i havent touched this part) 


LatLng myPosition; 
@Override 
public void onMapReady(final GoogleMap googleMap) { 

    mMap = googleMap; 
    mFusedLocationClient = 
    LocationServices.getFusedLocationProviderClient(getContext()); 

    // Add a marker in Sydney and move the camera 
    if (ActivityCompat.checkSelfPermission(getContext(), 
    android.Manifest.permission.ACCESS_FINE_LOCATION) != 
    PackageManager.PERMISSION_GRANTED && Activi 
    tyCompat.checkSelfPermission(getContext(), 
android.Manifest.permission.ACCESS_COARSE_LOCATION) != 
    PackageManager.PERMISSION_GRANTED) { 
     // TODO: Consider calling 

     return; 
    } 
    Task task= mFusedLocationClient.getLastLocation() 
      .addOnSuccessListener((Executor) this, new 
    OnSuccessListener<Location>() { 
       @Override 
       public void onSuccess(Location location) { 
        // Got last known location. In some rare situations this 
    can be null. 
       // Toast.makeText(getBaseContext(),"code run 
    here",Toast.LENGTH_SHORT).show(); 
        if (location != null) { 
         double latitude = location.getLatitude(); 
         double longitude = location.getLongitude(); 
         String a,b; 
         a= String.valueOf(latitude); 
         b= String.valueOf(longitude); 

         Log.d(a,b); 
        //  
    Toast.makeText(getBaseContext(),a+b,Toast.LENGTH_SHORT).show(); 
         LatLng latLng = new LatLng(latitude, longitude); 
         myPosition = new LatLng(latitude, longitude); 
         googleMap.addMarker(new 
    MarkerOptions().position(myPosition).title("Start")); 

    mMap.moveCamera(CameraUpdateFactory.newLatLng(myPosition)); 
        } 
       } 
      }); 
} 


public interface OnFragmentInteractionListener { 
    // TODO: Update argument type and name 
    void onFragmentInteraction(Uri uri); 
} 
} 

Ich habe versucht, dies zu tun, aber immer noch die gleichen Ergebnisse

laayout Datei

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.jimmy.workmen.DashboardFragment.MapsActivity"> 

<!-- TODO: Update blank fragment layout --> 

<com.google.android.gms.maps.MapView 
    android:id="@+id/Map" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

Antwort

0

das Problem war, dass ich mit

compile 'com.google.android.gms:play-services:7.8.0' 

statt allein mit Standort importiert sie ganz api so ersetzt ich es durch den Code unten und es funktioniert gut

compile 'com.google.android.gms:play-services-location:7.8.0' 
Verwandte Themen