我有一个视图寻呼机,我尝试在主片段中嵌套一个地图片段。为什么我不断收到“Error inflating class fragment”?

I have a view pager and I try to nest a fragment for a map within the main fragment. Why do I keep getting " Error inflating class fragment"?

从本周开始我就一直在研究这个特殊问题。我已经阅读了关于堆栈溢出的博客和建议的答案。我尝试了不同的解决方案,甚至使用了此处接受的一些答案,但我的应用程序仍然不断崩溃。我也尝试了 mapview,但它没有用。我需要一些帮助来解决这个问题。我以前实现过一张地图,我没有遇到任何问题,但那是在 activity 中。我在片段中实施时遇到问题,应用程序总是在 view = inflater.inflate(R.layout.fragment_serv__base_data, container, false); init();

崩溃

下面是我的清单文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.application.sweetiean.stlmaintenance" >

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTENAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--
     The following two permissions are not required to use
     Google Maps Android API v2, but are recommended.
-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="com.application.sweetiean.permission.MAPS_RECEIVE" />

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />
<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="AIzaSyA5ULk7TurdcL5PqVOjJ1ZDf9wiZJIwgZc" />

<permission
    android:name="com.application.sweetiean.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/supertechlogo"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".SplashActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar" >
    </activity>
    <activity
        android:name=".MaintenanceActivity"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.application.sweetiean.stlmaintenance.MainActivity" />
    </activity>
    <activity
        android:name="com.application.sweetiean.stlservicing.ServicingActivity"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.application.sweetiean.stlmaintenance.MainActivity" />
    </activity>
    <activity android:name=".DisplayOverviewActivity" >
    </activity>
    <activity
        android:name="com.application.sweetiean.stlservicing.STLSignatureActivity"
        android:label="STL Signature">
    </activity>
    <activity android:name="com.application.sweetiean.stlservicing.ClientSignatureActivity"
        android:label="Client Signature">
    </activity>
</application>

这里是 xml:

...
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="500dp"
        android:orientation="vertical"
        android:layout_marginBottom="10dp">

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

    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginBottom="10dp">

        <Button
            android:id="@+id/getLocationButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/getlocation"
            android:background="@drawable/blue_button"
            style="@style/button_text_small"/>

        <TextView
            android:id="@+id/locationTextView"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:textSize="12sp"/>

    </LinearLayout>
...

下面是fragment.java:

public class Serv_BaseDataFragment extends Fragment {

View view;
EditText sysaid, customer, siteId, address;
TextView locationCoordinates;
Spinner taskSpinner, regionSpinner;
Button sign_STL, sign_client, location;
GoogleMap googleMap;


public Serv_BaseDataFragment() {
    // Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    view = inflater.inflate(R.layout.fragment_serv__base_data, container, false);
    init();
    return view;

}


public void init(){

    googleMap = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

    sysaid = (EditText)view.findViewById(R.id.sysaidIdEditText);
    customer = (EditText)view.findViewById(R.id.customerEditText);
    siteId = (EditText)view.findViewById(R.id.siteIdEditText);
    address = (EditText)view.findViewById(R.id.addressEditText);
    locationCoordinates = (TextView)view.findViewById(R.id.locationTextView);

    taskSpinner = (Spinner)view.findViewById(R.id.taskTypeSpinner);
    ArrayAdapter<CharSequence> taskAdapter = ArrayAdapter.createFromResource(this.getActivity(), R.array.taskTypeArray, android.R.layout.simple_spinner_item);
    taskAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    taskSpinner.setAdapter(taskAdapter);

    regionSpinner = (Spinner)view.findViewById(R.id.regionSpinner);
    ArrayAdapter<CharSequence> regionAdapter = ArrayAdapter.createFromResource(this.getActivity(), R.array.regionArray, android.R.layout.simple_spinner_item);
    regionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    regionSpinner.setAdapter(regionAdapter);

    sign_client = (Button)view.findViewById(R.id.clientSignatureButton);
    sign_client.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getActivity(), ClientSignatureActivity.class);
            startActivityForResult(intent, 1);
        }
    });

    sign_STL = (Button)view.findViewById(R.id.STLSignatureButton);
    sign_STL.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getActivity(), STLSignatureActivity.class);
            startActivityForResult(intent, 1);
        }
    });

    location = (Button)view.findViewById(R.id.getLocationButton);
    location.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });


}

}

最后是错误日志:

11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime: FATAL EXCEPTION: main
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime: Process: com.application.sweetiean.stlmaintenance, PID: 5398
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime: android.view.InflateException: Binary XML file line #157: Error inflating class fragment
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:719)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at com.application.sweetiean.stlservicing.Serv_BaseDataFragment.onCreateView(Serv_BaseDataFragment.java:50)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1965)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1078)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1259)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1624)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.view.ViewPager.populate(ViewPager.java:1106)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.view.ViewPager.populate(ViewPager.java:952)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1474)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.View.measure(View.java:17327)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5363)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:610)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:677)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.View.measure(View.java:17327)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5363)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v7.internal.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.View.measure(View.java:17327)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5363)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.View.measure(View.java:17327)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5363)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.View.measure(View.java:17327)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5363)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.View.measure(View.java:17327)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5363)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2548)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.View.measure(View.java:17327)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2277)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1391)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1590)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1249)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6529)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:812)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.Choreographer.doCallbacks(Choreographer.java:612)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.Choreographer.doFrame(Choreographer.java:582)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:798)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:733)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:146)

确保 <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyA5ULk7TurdcL5PqVOjJ1ZDf9wiZJIwgZc" /><application> 元素内。如果您决定使用地图视图,您可以关注 。问题下的评论里还有其他很好的建议。

让我补充一点,当我测试 mapview 示例时 mContext = getActivity(); 对我不起作用,所以我将其注释掉了。此外,代码块中没有使用 mContext