Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ImageButton过多会导致应用程序崩溃_Java_Android_Android Layout_Android Fragments - Fatal编程技术网

Java ImageButton过多会导致应用程序崩溃

Java ImageButton过多会导致应用程序崩溃,java,android,android-layout,android-fragments,Java,Android,Android Layout,Android Fragments,在我的Android应用程序中,我必须在我的选项卡式活动的第一个片段中显示大约43个ImageButton,在另一个片段中显示其他不同的43个ImageButton。第一个很好,当我添加第二个片段时,应用程序崩溃了。不仅如此,如果我想显示在应用程序崩溃之前从未使用过的特定图像,请单击其中一个ImageButton 我的drawable文件夹中的图像是1MB(159幅图像),所以我不知道是否太多 以下是出现的错误兆欧表: E/AndroidRuntime:致命异常:主进程: com.example

在我的Android应用程序中,我必须在我的选项卡式活动的第一个片段中显示大约43个ImageButton,在另一个片段中显示其他不同的43个ImageButton。第一个很好,当我添加第二个片段时,应用程序崩溃了。不仅如此,如果我想显示在应用程序崩溃之前从未使用过的特定图像,请单击其中一个ImageButton

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

以下是出现的错误兆欧表:

E/AndroidRuntime:致命异常:主进程: com.example.myname.hira_kana,PID:6672 java.lang.OutOfMemoryError: 无法分配9000012字节分配和204192个可用字节 和199KB,直到OOM在 dalvik.system.VMRuntime.newNonMovableArray(本机方法)位于 android.graphics.BitmapFactory.NativeDecodeset(本机方法)位于 decodeStream(BitmapFactory.java:620)位于 decodeResourceStream(BitmapFactory.java:455) 在 android.graphics.drawable.drawable.createFromResourceStream(drawable.java:1155) 在 android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:720) 在 loadDrawable(ResourcesImpl.java:571) 位于android.content.res.Resources.getDrawable(Resources.java:771) android.content.Context.getDrawable(Context.java:525)位于 android.support.v4.content.ContextCompatApi21.getDrawable(ContextCompatApi21.java:30) 在 android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:372) 在 android.support.v7.widget.AppCompatidDrawableManager.getDrawable(AppCompatidDrawableManager.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) 在 AppCompatImageButton.(AppCompatImageButton.java:66) 在 AppCompatImageButton.(AppCompatImageButton.java:56) 在 android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:118)位于 appcompatedelegateimplv9.createView(appcompatedelegateimplv9.java:1021) 在 android.support.v7.app.AppCompateDelegateImplV9.onCreateView(AppCompateDelegateImplV9.java:1080) 在 LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:47) 在 LayoutInflater$FactoryMerge.onCreateView(LayoutInflater.java:192) 在 createViewFromTag(LayoutInflater.java:769) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) 位于android.view.LayoutInflater.rInflate(LayoutInflater.java:858) rayoutinflater.rInflateChildren(LayoutInflater.java:821) 在android.view.LayoutInflater.rInflate(LayoutInflater.java:861)中 rayoutinflater.rInflateChildren(LayoutInflater.java:821) 在android.view.LayoutInflater.rInflate(LayoutInflater.java:861)中 rayoutinflater.rInflateChildren(LayoutInflater.java:821) 在android.view.LayoutInflater.rInflate(LayoutInflater.java:861)中 rayoutinflater.rInflateChildren(LayoutInflater.java:821) 在android.view.LayoutInflater.inflate(LayoutInflater.java:518)中 膨胀(LayoutInflater.java:426) layout.frkata.onCreateView(frkata.java:56)位于 android.support.v4.app.Fragment.performCreateView(Fragment.java:2189) 在 FragmentManagerImpl.moveToState(FragmentManager.java:1299) 在 FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528) 在

(我不会发布所有错误,因为网站认为这是垃圾邮件)


非常感谢。将此粘贴到清单文件中:-

android:largeHeap=“true”

还请阅读以下内容:

例如:-

<application 
    android:name=".MyApplication"
     android:allowBackup="true"
     android:icon="@drawable/ic_launcher"
     android:label="Mall" android:largeHeap="true" 
     android:logo="@drawable/logo_for_up"
     android:screenOrientation="portrait"
     android:theme="@style/AppTheme" >
</application>

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

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

您正在尝试分配9000012字节。这相当于1500x1500像素的图像。这个太大了。“我的可绘制文件夹中的图像是1MB”——这毫无意义。重要的是内存的大小,磁盘上的图像是以压缩的形式存储的。除了真正必要的时候,任何事情都应该避免使用这种方法。你应该努力学习并解决问题,而不是用绷带包扎然后说问题已经解决了。