简体   繁体   English

寻呼机适配器内的片段中未显示Google地图

[英]Google Maps not showing in fragment within pager adapter

Attempting to integrate code into app on 3rd page. 尝试将代码集成到第三页的应用程序中。 Using a pager adapter. 使用寻呼机适配器。 Can access page, but not map. 可以访问页面,但不能访问地图。 Only white screen appears, no Google logo appears. 仅显示白屏,不显示Google徽标。

activity_maps2.xml 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 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));
}

} }

Pager 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];
}
}

First, you should extend Fragment instead of FragmentActivity in your MapsActivity 首先,您应该在MapsActivity中扩展Fragment而不是FragmentActivity

and use 和使用

case 2:
            return new MapsActivity();

instead of 代替

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

and in your MapsActivity's onCreateView use this Snippet of code 然后在您的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;
    }

and make sure you have your API Key in your manifest like this 并确保清单中有这样的API密钥

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM