简体   繁体   English

错误夸大类片段:android.view.InflateException

[英]Error inflating class fragment: android.view.InflateException

I have searched the forum for hours, but I can't find a solution for my problem. 我已经在论坛上搜索了几个小时,但是找不到解决我问题的方法。 I have an Activity which has some TextView and a MapFragment. 我有一个带有一些TextView和MapFragment的Activity。 For setting up the Fragment I have a seperate class. 为了设置片段,我有一个单独的类。

The Activity which calls the MapFragment class: package homework.android.aut.bme.hu.shoppy; 调用MapFragment类的Activity:package homework.android.aut.bme.hu.shoppy;

import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.FirebaseDatabase;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import homework.android.aut.bme.hu.shoppy.data.Entry;
import homework.android.aut.bme.hu.shoppy.map.MapFragment;

import static homework.android.aut.bme.hu.shoppy.LoginActivity.userName;

public class EntryDetailActivity extends MainActivity {
    @BindView(R.id.detailTitle)
    TextView DetailTitle;
    @BindView(R.id.detailBody)
    TextView DetailBody;

    private Entry tmpEntry;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_entry_detail);
        ButterKnife.bind(this);

        Intent intent = getIntent();
        tmpEntry = (Entry) intent.getSerializableExtra("tmpEntry");

        DetailTitle.setText(tmpEntry.getTitle());
        DetailBody.setText(tmpEntry.getBody());
        MapFragment mapFragment = new MapFragment();
        Bundle args = new Bundle();
        args.putDouble("latitude", tmpEntry.getLatitude());
        args.putDouble("longitude", tmpEntry.getLongitude());

        ViewGroup view = (ViewGroup) findViewById(R.id.activity_write_post);
        mapFragment.onCreateView(LayoutInflater.from(getApplicationContext()),view,args);

    }

    @OnClick(R.id.btnDelete)
    void deleteList() {
        FirebaseDatabase.getInstance().getReference().child(userName).child(tmpEntry.getId()).setValue(null).addOnCompleteListener(new OnCompleteListener<Void>() {

            @Override
            public void onComplete(@NonNull Task<Void> task) {
                Toast.makeText(EntryDetailActivity.this, "Entry deleted", Toast.LENGTH_SHORT).show();

                finish();
            }
        });
    }

}

Here is the layout of this Activity 这是此活动的布局

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_write_post"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin">

        <TextView
            android:id="@+id/detailTitle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:textSize="20sp"
            android:textStyle="bold"/>

        <TextView
            android:id="@+id/detailBody"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"/>

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

        <Button
            android:id="@+id/btnDelete"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/delete_this_list" />

    </LinearLayout>
</ScrollView>

The class of MapFragment: MapFragment的类:

package homework.android.aut.bme.hu.shoppy.map;


import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;

import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

import homework.android.aut.bme.hu.shoppy.R;


public class MapFragment extends android.support.v4.app.Fragment implements OnMapReadyCallback
{
    GoogleMap googleMap;
    private double latitude;
    private double longitude;
    private Marker marker;

    public MapFragment() {
        this.latitude = 0;
        this.longitude = 0;
    }


    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {

        View v = inflater.inflate(R.layout.activity_entry_detail, container, false);

        this.latitude = savedInstanceState.getDouble("latitude");
        this.longitude = savedInstanceState.getDouble("longitude");

        SupportMapFragment mapFrag = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
        mapFrag.getMapAsync(this);

        return v;
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        this.googleMap = googleMap;
        setUpMap();
    }

    private void setUpMap() {
        LatLng position = new LatLng(latitude, longitude);
        MarkerOptions markerOptions = new MarkerOptions().
                position(position).
                title("Location of the shop");

        marker = googleMap.addMarker(markerOptions);

        CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(position, 15);
        googleMap.animateCamera(cameraUpdate);
    }
}

I get this error: 我收到此错误:

    05-18 21:43:49.781 10290-10290/homework.android.aut.bme.hu.shoppy E/AndroidRuntime: FATAL EXCEPTION: main
    Process: homework.android.aut.bme.hu.shoppy, PID: 10290
    java.lang.RuntimeException: Unable to start activity ComponentInfo{homework.android.aut.bme.hu.shoppy/homework.android.aut.bme.hu.shoppy.EntryDetailActivity}: android.view.InflateException: Binary XML file line #33: Binary XML file line #33: Error inflating class fragment
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2681)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2742)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1489)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6171)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:891)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:781)
     Caused by: android.view.InflateException: Binary XML file line #33: Binary XML file line #33: Error inflating class fragment
     Caused by: android.view.InflateException: Binary XML file line #33: Error inflating class fragment
     Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.fragment" on path: DexPathList[[zip file "/data/app/homework.android.aut.bme.hu.shoppy-1/base.apk", zip file "/data/app/homework.android.aut.bme.hu.shoppy-1/split_lib_dependencies_apk.apk", zip file "/data/app/homework.android.aut.bme.hu.shoppy-1/split_lib_slice_0_apk.apk", zip file "/data/app/homework.android.aut.bme.hu.shoppy-1/split_lib_slice_1_apk.apk", zip file "/data/app/homework.android.aut.bme.hu.shoppy-1/split_lib_slice_2_apk.apk", zip file "/data/app/homework.android.aut.bme.hu.shoppy-1/split_lib_slice_3_apk.apk", zip file "/data/app/homework.android.aut.bme.hu.shoppy-1/split_lib_slice_4_apk.apk", zip file "/data/app/homework.android.aut.bme.hu.shoppy-1/split_lib_slice_5_apk.apk", zip file "/data/app/homework.android.aut.bme.hu.shoppy-1/split_lib_slice_6_apk.apk", zip file "/data/app/homework.android.aut.bme.hu.shoppy-1/split_lib_slice_7_apk.apk", zip file "/data/app/homework.android.aut.bme.hu.shoppy-1/split_lib_slice_8_apk.apk", zip file "/data/app/homework.android.aut.bme.hu.shoppy-1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/homework.android.aut.bme.hu.shoppy-1/lib/arm, /system/lib, /vendor/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at android.view.LayoutInflater.createView(LayoutInflater.java:609)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:700)
        at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:68)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:717)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:785)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
        at homework.android.aut.bme.hu.shoppy.map.MapFragment.onCreateView(MapFragment.java:41)
        at homework.android.aut.bme.hu.shoppy.EntryDetailActivity.onCreate(EntryDetailActivity.java:51)
        at android.app.Activity.performCreate(Activity.java:6682)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2634)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2742)
05-18 21:43:49.782 10290-10290/homework.android.aut.bme.hu.shoppy E/AndroidRuntime:     at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1489)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6171)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:891)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:781)

Maybe it's because the it's inflates an already started Activity? 也许是因为它夸大了已经开始的Activity? I don't know why it stops there and I haven't found any similar issues like this... I'm sure that something little is missing for me for this.. 我不知道为什么它会停在那里,而且我还没有发现类似的问题……我敢肯定,为此我缺少一些东西。

Thanks for help! 感谢帮助!

you do not need to call fragment lifecycle method manually, it should be managed by the OS so remove 您不需要手动调用片段生命周期方法,它应该由操作系统进行管理,因此请删除

mapFragment.onCreateView(LayoutInflater.from(getApplicationContext()),view,args);

instead use 代替使用

mapFragment = (MapFragment)getSupportFragmentManager().findFragmentById(R.id.map);

暂无
暂无

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

相关问题 android.view.InflateException夸大类片段的错误 - android.view.InflateException Error inflating class fragment Android调试错误android.view.InflateException:二进制XML文件第9行:夸大类片段的错误 - Android debugging error android.view.InflateException: Binary XML file line #9: Error inflating class fragment 谷歌地图视图android.view.InflateException:二进制XML文件-错误夸大类片段 - Google maps view android.view.InflateException: Binary XML File - error inflating class fragment Android Google Map API v2-错误扩充类别片段android.view.InflateException - Android Google Map API v2 - Error Inflating Class Fragment android.view.InflateException Android-android.view.InflateException:二进制XML文件第9行:膨胀类片段的错误 - Android - android.view.InflateException: Binary XML file line #9: Error inflating class fragment 由 android 工作室制作的导航抽屉:android.view.InflateException:错误充气 class 片段 - navigation drawer made from android studio : android.view.InflateException: Error inflating class fragment 我遇到错误,显示通过 android.view.InflateException 对 class 片段进行膨胀时出错:二进制 XML 文件 - i am having error that shows Error inflating class fragment by android.view.InflateException: Binary XML file android.view.InflateException:二进制XML文件行#8:错误膨胀类片段 - android.view.InflateException: Binary XML file line #8: Error inflating class fragment android.view.InflateException:二进制XML文件第0行:二进制XML文件第0行:膨胀类片段时出错 - android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class fragment android.view.InflateException:二进制XML文件第7行:二进制XML文件第7行:夸大类片段的错误 - android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class fragment
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM