Java ImageButton过多会导致应用程序崩溃
在我的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) 在 (我不会发布所有错误,因为网站认为这是垃圾邮件)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: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”——这毫无意义。重要的是内存的大小,磁盘上的图像是以压缩的形式存储的。除了真正必要的时候,任何事情都应该避免使用这种方法。你应该努力学习并解决问题,而不是用绷带包扎然后说问题已经解决了。