2017-01-02 57 views
0

試圖在第三頁上將代碼整合到應用程序中。使用尋呼機適配器。可以訪問頁面,但不能映射。只出現白色屏幕,不顯示Google徽標。谷歌地圖在尋呼機適配器內沒有顯示片段

activity_maps2.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#1c1356" 
android:orientation="vertical"> 
<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:map="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/map" 
android:name="com.google.android.gms.maps.SupportMapFragment" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.porteradvertising.richmondmeltdown2.MapsActivity" /> 

</LinearLayout> 

Maps_Activity.Java

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

private GoogleMap mMap; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_maps2); 
    // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
} 


/** 
* Manipulates the map once available. 
* This callback is triggered when the map is ready to be used. 
* This is where we can add markers or lines, add listeners or move the camera. In this case, 
* we just add a marker near Sydney, Australia. 
* If Google Play services is not installed on the device, the user will be prompted to install 
* it inside the SupportMapFragment. This method will only be triggered once the user has 
* installed Google Play services and returned to the app. 
*/ 
@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    // Add a marker in Sydney and move the camera 
    LatLng sydney = new LatLng(-34, 151); 
    mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
} 

}

尋呼機Adapter.Java

public class PagerAdapter extends FragmentPagerAdapter { 

String title; 
Context context; 

public PagerAdapter(FragmentManager fm) { 
    super(fm); 


} 

@Override 
public android.support.v4.app.Fragment getItem(int arg0) { 
    switch (arg0) { 
     case 0: 
      return new FragmentTwo(); 
     case 1: 
      return new FragmentOne(); 
     case 2: 
      return new android.support.v4.app.Fragment(); 
     case 3: 
      return new FragmentThree(); 
     default: 
      break; 
    } 
    return null; 
} 

@Override 
public int getCount() { 
    return 4; 
} 

String[] titles = {"Home", "Schedule","Map","General Info"}; 

@Override 
public CharSequence getPageTitle(int position) { 
    return titles[position]; 
} 
} 

回答

0

首先,你應該擴展片段代替鄰˚FFragmentActivity在MapsActivity

,並使用

case 2: 
      return new MapsActivity(); 

,而不是

case 2: 
      return new android.support.v4.app.Fragment(); 

,並在您MapsActivity的onCreateView使用此代碼片段

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.activity_maps2,container,false); 
     MapView mapView = (MapView) view.findViewById(R.id.map); 
     mapView.onCreate(savedInstanceState); 
     mapView.onResume(); // needed to get the map to display immediately 
     return view; 
    } 

,並確保你有你您的清單中的API密鑰像這樣

<application 
.... 
...> 
<meta-data 
      android:name="com.google.android.geo.API_KEY" 
      android:value="YOUR_API_KEY" /> 
+0

謝謝!你救了我的命!!! –