Java InflateException:二进制 XML 文件第 1 行:由 OutOfMemoryError 引起的错误膨胀类 <unknown>
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/20680451/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
InflateException: Binary XML file line #1: Error inflating class <unknown> caused by OutOfMemoryError
提问by Lemon Juice
Here is my code:
这是我的代码:
input.xml(layout folder)
input.xml(布局文件夹)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:background="@drawable/background_main" >
<ImageView
android:id="@+id/logo_image"
android:background="@drawable/background_green"
android:src="@drawable/titleimage"
android:layout_width="match_parent"
android:layout_height="50dp"
/>
<ScrollView
android:id="@+id/scroller"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/logo_image"
android:layout_marginTop="10dp"
>
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:stretchColumns="*" >
<TableRow
android:id="@+id/device_type_row"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:layout_marginRight="5dp" >
<RadioButton
android:id="@+id/device_type_radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/device_type" />
<RadioGroup
android:id="@+id/device_type_radio_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/radioIos"
android:layout_width="wrap_content"
android:layout_height = "wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/iOS"
/>
<RadioButton
android:id="@+id/radioAndroid"
android:layout_width="wrap_content"
android:layout_height = "wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/android"
/>
</RadioGroup>
</TableRow>
<TableRow
android:id="@+id/days_as_customers_row"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:layout_marginRight="5dp" >
<RadioButton
android:id="@+id/days_as_customers_radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/days_as_customers" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:weightSum="2" >
<SeekBar
android:id="@+id/days_as_customer_seekbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<TextView
android:id="@+id/days_as_customer_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1/210"
android:layout_weight="1"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
</TableRow>
<TableRow
android:id="@+id/average_sessions_row"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/average_sessions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/average_sessions" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:weightSum="2" >
<SeekBar
android:id="@+id/average_sessions_seekbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<TextView
android:id="@+id/average_sessions_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="240/9000"
android:layout_weight="1"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
</TableRow>
<TableRow
android:id="@+id/tableRow4"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/conversion_time_radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/conversion_title" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:weightSum="2" >
<SeekBar
android:id="@+id/conversion_time_seekbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<TextView
android:id="@+id/conversion_time_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3/55"
android:layout_weight="1"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
</TableRow>
<TableRow
android:id="@+id/tableRow5"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/monthly_spend_radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/monthly_spend" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:weightSum="2" >
<SeekBar
android:id="@+id/monthly_spend_seekbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<TextView
android:id="@+id/monthly_spend_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3/55"
android:layout_weight="1"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
</TableRow>
<TableRow
android:id="@+id/tableRow6"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/virality_invites_sent_radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/virality_invites_sent" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:weightSum="2" >
<SeekBar
android:id="@+id/virality_invites_sent_seekbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<TextView
android:id="@+id/virality_invites_sent_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0-50"
android:layout_weight="1"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
</TableRow>
<TableRow
android:id="@+id/tableRow7"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/churned_users_radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/churned_users" />
<RadioGroup
android:id="@+id/churned_users_radio_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/radioYes"
android:layout_width="wrap_content"
android:layout_height = "wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/iOS"
/>
<RadioButton
android:id="@+id/radioNo"
android:layout_width="wrap_content"
android:layout_height = "wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/android"
/>
</RadioGroup>
</TableRow>
<TableRow
android:id="@+id/tableRow8"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/ltv_total_spent_radio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/ltv_total_spent" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:weightSum="2" >
<SeekBar
android:id="@+id/ltv_total_spent_seekbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
<TextView
android:id="@+id/ltv_total_spent_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0$-80$"
android:layout_weight="1"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
</TableRow>
</TableLayout>
</ScrollView>
<Button
android:id="@+id/input_submit_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="@drawable/submit_button_img" />
</RelativeLayout>
InputFragment.java
输入片段.java
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
public class InputFragment extends Fragment {
private Button submit;
private RadioButton deviceTypeRadio, daysAsCustomerRadio, averageSessionsRadio, conversionTimeRadio;
private RadioButton monthlySpendRadio,viralityInvitesSentRadio, churnedUsersRadio, LTVTotalSpentRadio;
private SeekBar daysAsCustomerSeek, averageSessionSeek, conersionTimeSeek, monthlySpendSeek;
private SeekBar viralityInvitesSeek, ltvTotalSpentSeek;
private TextView daysasAsCustomerText, averageSessionText, conversionTimeText, monthlySpendText;
private TextView viralityInvitesText, letvTotalText;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
//Intializing instance variables
View view = inflater.inflate(R.layout.input, container,false);
submit = (Button)view.findViewById(R.id.input_submit_button);
return view;
}
}
I can run this code properly, but when I changed the orientation of the Emulator, it gives the following error.
我可以正确运行此代码,但是当我更改模拟器的方向时,会出现以下错误。
12-19 11:17:53.590: E/AndroidRuntime(5644): FATAL EXCEPTION: main
12-19 11:17:53.590: E/AndroidRuntime(5644): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx.xxx/com.nFlate.xxx.MainActivity}: android.view.InflateException: Binary XML file line #1: Error inflating class <unknown>
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3692)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.app.ActivityThread.access0(ActivityThread.java:141)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1240)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.os.Handler.dispatchMessage(Handler.java:99)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.os.Looper.loop(Looper.java:137)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.app.ActivityThread.main(ActivityThread.java:5041)
12-19 11:17:53.590: E/AndroidRuntime(5644): at java.lang.reflect.Method.invokeNative(Native Method)
12-19 11:17:53.590: E/AndroidRuntime(5644): at java.lang.reflect.Method.invoke(Method.java:511)
12-19 11:17:53.590: E/AndroidRuntime(5644): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-19 11:17:53.590: E/AndroidRuntime(5644): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-19 11:17:53.590: E/AndroidRuntime(5644): at dalvik.system.NativeStart.main(Native Method)
12-19 11:17:53.590: E/AndroidRuntime(5644): Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class <unknown>
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.view.LayoutInflater.createView(LayoutInflater.java:613)
12-19 11:17:53.590: E/AndroidRuntime(5644): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
12-19 11:17:53.590: E/AndroidRuntime(5644): at com.nFlate.nflate.InputFragment.onCreateView(InputFragment.java:30)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1478)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1877)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:552)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1164)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.app.Activity.performStart(Activity.java:5114)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2153)
12-19 11:17:53.590: E/AndroidRuntime(5644): ... 12 more
12-19 11:17:53.590: E/AndroidRuntime(5644): Caused by: java.lang.reflect.InvocationTargetException
12-19 11:17:53.590: E/AndroidRuntime(5644): at java.lang.reflect.Constructor.constructNative(Native Method)
12-19 11:17:53.590: E/AndroidRuntime(5644): at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.view.LayoutInflater.createView(LayoutInflater.java:587)
12-19 11:17:53.590: E/AndroidRuntime(5644): ... 27 more
12-19 11:17:53.590: E/AndroidRuntime(5644): Caused by: java.lang.OutOfMemoryError
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:502)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:355)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:785)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.content.res.Resources.loadDrawable(Resources.java:1965)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.view.View.<init>(View.java:3330)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.view.View.<init>(View.java:3259)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.view.ViewGroup.<init>(ViewGroup.java:425)
12-19 11:17:53.590: E/AndroidRuntime(5644): at android.widget.RelativeLayout.<init>(RelativeLayout.java:210)
12-19 11:17:53.590: E/AndroidRuntime(5644): ... 30 more
Basically, the error is targeting to the below place:
基本上,错误针对以下位置:
View view = inflater.inflate(R.layout.input, container,false);
This only happens in Emulator, not in phone. What is wrong here?
这仅发生在模拟器中,而不发生在手机中。这里有什么问题?
采纳答案by laalto
Check your drawable/background_main
i.e. the background image of your root layout - the VM runs out of memory when decoding the bitmap. Make the image dimensions smaller.
检查您的drawable/background_main
ie 根布局的背景图像 - 解码位图时 VM 内存不足。使图像尺寸更小。
回答by kalyan pvs
You are using this layout in fragment not in Activity.And also there is another exception OutOfMemory
your background image is very large try to reduce it..
您在片段中使用此布局而不是在 Activity 中。还有另一个例外,OutOfMemory
您的背景图像非常大,请尝试减少它。
回答by Piyush
The problem occurs because the *drawable/background_main*has a high resolution image. So when it loads then the VM runs out of memory.
出现问题是因为*drawable/background_main*具有高分辨率图像。因此,当它加载时,VM 会耗尽内存。
So best way is to reduce it size or resolution.
所以最好的方法是减小它的大小或分辨率。
回答by M D
Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget may be the real culprit here. Try using smaller image to see if it is a memory-related issue. Check out these links for examples of similar issues:
引起:java.lang.OutOfMemoryError:位图大小超出VM预算可能是这里的真正罪魁祸首。尝试使用较小的图像,看看它是否与内存相关的问题。查看这些链接以获取类似问题的示例:
java.lang.OutOfMemoryError: bitmap size exceeds VM budget - android - how many images?and OutOfMemory exception when loading bitmap from external storage
java.lang.OutOfMemoryError:位图大小超出 VM 预算 - android - 有多少图像?而 从外部存储内存溢出的异常,当加载位图
回答by Ivan Aracki
I've solved the same problem by reducing dimension of .png buttons in all xml files
我通过减少所有 xml 文件中 .png 按钮的尺寸解决了同样的问题
回答by Tushar Saha
Try using images of different resolutions such as mdpi,hdpi,xhdpi if only using higher resolution images it might cause a crash in low resolution phones
尝试使用不同分辨率的图像,如 mdpi、hdpi、xhdpi 如果只使用更高分辨率的图像可能会导致低分辨率手机崩溃
回答by jobbert
My problem was that I had a shape with a <solid>
with color ?selectableItemBackground
. Yes it is dumb and a specific case, but posting it here for people with the same mistake.
我的问题是我有一个<solid>
带颜色的形状?selectableItemBackground
。是的,这很愚蠢,而且是一个特定的案例,但将其张贴在这里供有同样错误的人使用。
回答by Gustavo Tufi?o Fernández
Well, in my case the answer was in xml design, conflict android:backgroundTint and android:tint
好吧,就我而言,答案是在 xml 设计中,冲突 android:backgroundTint 和 android:tint
I was design a FloatinActionButton like this:
我正在设计一个这样的 FloatinActionButton:
<android.support.design.widget.FloatingActionButton
android:id="@+id/fa_close_patient"
android:layout_width="50dp"
android:layout_height="50dp"
android:scaleX="0.8"
android:scaleY="0.8"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_gravity="right"
android:layout_marginEnd="30dp"
android:backgroundTint="@color/white"
android:src="@drawable/ic_close_black_24dp"
android:tint="@color/colorPrimaryDark" />
and it's ok but API > 23
没关系,但 API > 23
If u design for API_LEVEL < 23, this it's the fix
如果你为 API_LEVEL < 23 设计,这就是修复
<android.support.design.widget.FloatingActionButton
android:id="@+id/fa_close_patient"
android:layout_width="50dp"
android:layout_height="50dp"
android:scaleX="0.8"
android:scaleY="0.8"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_gravity="right"
android:layout_marginEnd="30dp"
app:backgroundTint="@color/white"
android:src="@drawable/ic_close_black_24dp"/>
I hope I have help you,
希望对你有帮助
Regards
问候
回答by Pratik Mhatre
In my case I was getting illogical class inflation exceptions, after digging for a while I found that the error was caused due to deprecated code blocks related to android framework itself.
在我的情况下,我遇到了不合逻辑的类通胀异常,经过一段时间的挖掘,我发现该错误是由于与 android 框架本身相关的不推荐使用的代码块引起的。
回答by Hossein Karami
for those who have this problem: there are some cases that may lead app to crash. I have seen these the most.
对于有此问题的人:有些情况可能会导致应用程序崩溃。我见过的最多的是这些。
1- using ?selectableItemBackground may cause this problem.
1- 使用 ?selectableItemBackground 可能会导致此问题。
2- if using large images (or else) that make the application errors like failed to allocate... this happens when hardware accelerated is on. you can set it to off in this case and using large-heap in manifest(application element)
2-如果使用大图像(或其他)导致应用程序错误,例如无法分配......当硬件加速打开时会发生这种情况。在这种情况下,您可以将其设置为关闭并在清单(应用程序元素)中使用大堆
3- if you have a drawable that is in v-21(for example) branch and you are running app on below 21, it can cause this problem too.
3- 如果您在 v-21(例如)分支中有一个 drawable,并且您在 21 以下运行应用程序,它也会导致此问题。
good luck!
祝你好运!