太多的ImageButton会导致应用崩溃

时间:2017-04-23 17:05:15

标签: java android android-layout android-fragments

在我的Android应用程序中,我必须在我的选项卡式活动的第一个片段中显示43个ImageButton,而在另一个片段中显示其他43个。第一个工作正常,当我添加应用程序崩溃的第二个片段时。不仅如果我点击我的一个ImageButton,如果我想要显示在应用程序崩溃之前从未使用过的特定图像。

我的drawable文件夹中的图像是1MB(159张图像),所以我真的不知道它是否太多了。

这是出现的错误:

  

E / AndroidRuntime:致命异常:主要流程:   com.example.myname.hira_kana,PID:6672 java.lang.OutOfMemoryError:   无法分配具有204192个空闲字节的9000012字节分配   到OOM时为199KB   dalvik.system.VMRuntime.newNonMovableArray(Native Method)at   android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)at   android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:620)at at   android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:455)   在   android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1155)   在   android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:720)   在   android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571)   在android.content.res.Resources.getDrawable(Resources.java:771)处   android.content.Context.getDrawable(Context.java:525)at   android.support.v4.content.ContextCompatApi21.getDrawable(ContextCompatApi21.java:30)   在   android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:372)   在   android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:202)   在   android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:190)   在   android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100)   在   android.support.v7.widget.AppCompatImageHelper.loadFromAttributes(AppCompatImageHelper.java:54)   在   android.support.v7.widget.AppCompatImageButton。(AppCompatImageButton.java:66)   在   android.support.v7.widget.AppCompatImageButton。(AppCompatImageButton.java:56)   在   android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:118)at at   android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1021)   在   android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1080)   在   android.support.v4.view.LayoutInflaterCompatHC $ FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:47)   在   android.view.LayoutInflater $ FactoryMerger.onCreateView(LayoutInflater.java:192)   在   android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769)   在   android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)   在android.view.LayoutInflater.rInflate(LayoutInflater.java:858)处   android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)   在android.view.LayoutInflater.rInflate(LayoutInflater.java:861)处   android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)   在android.view.LayoutInflater.rInflate(LayoutInflater.java:861)处   android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)   在android.view.LayoutInflater.rInflate(LayoutInflater.java:861)处   android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)   在android.view.LayoutInflater.inflate(LayoutInflater.java:518)at   android.view.LayoutInflater.inflate(LayoutInflater.java:426)at   layout.frkata.onCreateView(frkata.java:56)at   android.support.v4.app.Fragment.performCreateView(Fragment.java:2189)   在   android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)   在   android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)   在

(我发布了所有错误,因为该网站认为它是垃圾邮件)

非常感谢你。

2 个答案:

答案 0 :(得分:2)

将其粘贴到清单文件中: -

机器人:largeHeap ="真"

另请阅读:http://dwij.co.in/increase-heap-size-of-android-application/

实施例: -

gsub!

答案 1 :(得分:0)

问题可能是因为您的图片可能非常大。请创建高度和宽度较小的位图,然后在Imageview中使用这些图像。 您可以使用以下代码创建小位图:

 bitmap = Bitmap.createScaledBitmap(bitmap, outWidth, outHeight, true);