0

FragmentManagerに問題があります。私は断片的にGoogleマップを取得しようとしています。これは私の断片です。私はcom.google.android.gmsを使用して、指定された位置のためのマップを作りたい:遊ぶ-サービス:9.2.1フラグメントマネージャー2番目の変数

>

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.

私は地図をプレイサービスでの作業を取得するために@benの助けを借りて作業断片を取得することができた: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

関連する問題