Google地图未在分页器适配器中显示片段

时间:2017-01-02 18:53:08

标签: java android google-maps android-studio android-fragments

尝试在第3页上将代码集成到应用程序中。使用寻呼机适配器。可以访问页面,但不能访问地图。仅显示白屏,不显示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];
}
}

1 个答案:

答案 0 :(得分:0)

首先,您应该在MapsActivity中扩展Fragment而不是FragmentActivity

并使用

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" />