无法添加谷歌地图导航抽屉片段抽屉、片段、地图

2023-09-05 04:47:59 作者:扮乖

我试图在Android的一个应用程序,我想添加地图在导航抽屉。抽屉的选择开辟了新的片段,但不能使地图碎片的工作。

I'm trying to make an app in Android and I want to add a Map in a Navigation Drawer. The drawer options open new fragments but can't make the Map fragment to work.

在 MainActivity.java 设置片段的方式如下:

The MainActivity.java sets the fragment the following way:

/**
 * Diplaying fragment view for selected nav drawer list item
 * */
private void displayView(int position) {
    // update the main content by replacing fragments
    Fragment fragment = null;
    switch (position) {
    case 0:
        fragment = new HomeFragment();
        break;
    case 1:
        fragment = new PoliFragment();
        break;
    case 2:
        fragment = new TilefonaFragment();
        break;
    case 3:
        fragment = new DromologiaFragment();
        break;
    case 4:
        fragment = new XartisFragment();
        break;

    default:
        break;
    }

    if (fragment != null) {
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.frame_container, fragment).commit();

        // update selected item and title, then close the drawer
        mDrawerList.setItemChecked(position, true);
        mDrawerList.setSelection(position);
        //setTitle(navMenuTitles[position]);
        mDrawerLayout.closeDrawer(mDrawerList);
    } else {
        // error in creating fragment
        Log.e("MainActivity", "Error in creating fragment");
    }
}

地图片段( XartisFragment.java )如下:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;


public class XartisFragment extends Fragment {
private GoogleMap map;

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.map_layout,container, false);

    map =   ((SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.map)).getMap();//((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map)).getMap();
    return rootView;
}


}

在 map_layout.xml 如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<fragment
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="8dp" />


</RelativeLayout> 

当我尝试运行它,我得到:

When I try to run it I get:

Error:(178, 15) error: incompatible types: XartisFragment cannot be converted to Fragment

据指出错误,以这条线在MainActivity.java

It points the error to this line in MainActivity.java

fragment = new XartisFragment();

任何有关为了改变什么,使其加载想法?

Any ideas about what to change in order to make it load?

推荐答案

尝试使用 getSupportFragmentManager(),而不是 getFragmentManager()

确认这两个地方都导入相同的片段类。这感觉有点像在一个地方要导入android.app.Fragment(原生API级别11版本的片段),并在其他地方,你是从Android支持导入android.support.v4.app.Fragment(碎片包)。

Make sure that both places are importing the same Fragment class. It feels a bit like in one place you are importing android.app.Fragment (the native API Level 11 version of fragments) and in the other places you are importing android.support.v4.app.Fragment (the fragments from the Android Support package).