0

FragmentManager에 문제가 있습니다. 나는 조각에서 구글 맵을 얻으려고 노력하고있다. 이것은 나의 단편입니다. 나는 com.google.android.gms를 사용하여 지정된 위치에 대한지도를 만들고 싶어 : 플레이 서비스 : 9.2.1Fragmentmanager 2nd 변수

>

import android.os.Bundle; 

import android.support.v4.app.FragmentActivity; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.OnMapReadyCallback; 
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.spoturdeal.spoturdeal.R; 


public class MapShopsFragment extends FragmentActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.mapdeals); 
     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 
    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 

     // Add a marker in Somewhere, and move the camera. 
     LatLng somewhere = new LatLng(51, 6); 
     mMap.addMarker(new MarkerOptions().position(somewhere).title("Marker in somewhere")); 
     mMap.moveCamera(CameraUpdateFactory.newLatLng(somewhere)); 
    } 
} 

MainActivity 다음과 같은 수입을 가지고

>

내가 android.support.v4.app.FragmentActivity 문제가있는 코드를 사용하고 있음을 나는 확인했다
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.pm.PackageManager; 
import android.os.Build; 
import android.os.Bundle; 
import android.os.Process; 
import android.support.design.widget.NavigationView; 
import android.support.design.widget.Snackbar; 
import android.support.v4.app.ActivityCompat; 
import android.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.content.ContextCompat; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Toast; 
import android.Manifest; 


import com.spoturdeal.spoturdeal.R; 
import com.spoturdeal.spoturdeal.fragments.MapShopsFragment; 

이 부분

입니다 (77, 25) 오류 : 호환되지 않는 유형 : 만들 때 내가 할 수있는

>

private void displayInitialFragment() { 

     MapShopsFragment mapShopsFragment = new MapShopsFragment(); 
     FragmentManager fragmentmanager = getSupportFragmentManager(); 
     fragmentmanager.beginTransaction() 
       .setCustomAnimations(R.anim.anim_slide_in_from_left, R.anim.anim_slide_out_from_left) 
       .replace(R.id.relativelayout_for_fragment, 
         mapShopsFragment,   /** here is the Problem 
         mapShopsfragment.getTag() 
       ).commit(); 

    } 

오류 메시지는 오류입니다 MapShopsFragment 내가하고 있어요 몇 가지 더 조각이

을 단편으로 변환 할 수 없습니다 그들은 문제가있다. ListFragments로 확장됩니다.

재료 디자인 메뉴를 설정해야하기 때문에 다른 액티비티에서 맵을 만들고 싶지 않습니다. 나는 다음과 같은 메시지를 얻을 안드로이드 스튜디오의 상태 표시 줄에서

'replace(int, android.support.v4.app.Fragment)' in 'android.support.v4.app.FragmentTransaction' cannot be applied to '(int, com.spoturdeal.spoturdeal.fragments.MapShopsFragment)' but do not understand what is meant by it.

나는지도 플레이 서비스 작업을 얻을 @ 벤의 도움으로 작업 조각을 얻을 수있었습니다 : 9.2.1 조금 더 힘들었다. 아래는 완벽한 솔루션입니다. >

public class MapShopsFragment extends Fragment implements OnMapReadyCallback { 


    private MapView mapView; 
    private GoogleMap googleMap; 

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

    } 
    public void onViewCreated(View v, Bundle savedInstanceState) { 

     mapView = (MapView) v.findViewById(R.id.map); 
     mapView.onCreate(savedInstanceState); 
     mapView.onResume(); 
     mapView.getMapAsync(this); 

    } 

    @Override 
    public void onMapReady(GoogleMap map) { 
     googleMap = map; 
     ...... 
    } 
} 

답변

0

문제

당신은 FragmentActivity 아닌 조각을 만드는 것입니다. 조각 관리자는 지원 단편을 전달할 것으로 예상합니다. MapShopsFragment가 Fragment를 확장해야하는 이유

+0

광산 MainActivity는 가져 오기 만 원합니다> com.spoturdeal.spoturdeal.fragments.MapShopsFragment; import를 추가하면 android.support.v4.app.Fragment; 그것은 회색으로 될 것입니다 – Charley57

+0

예, 혼란 스러워요. 업데이트 된 답변보기 – Ben

+0

안녕 벤, 지금까지 도움을 주셔서 감사합니다. I Fragment가 효과가있는 것 같습니다. 하지만 이제 맵뷰를 적절하게 얻을 수있게되었습니다. 이 오류가 발생했습니다> 원인 : java.lang.ClassCastException : android.widget.FrameLayout을 com.google.android.gms.maps로 캐스팅 할 수 없습니다. MapView – Charley57

관련 문제