[英]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.