Xamarin android:SetImageResource崩溃了应用程序

时间:2015-01-29 19:48:48

标签: android xamarin

我有一个包含ImageView的活动。 图像在OnCreate方法中设置,它工作正常。 但是当我开始一个新的活动(同一类型)时,在我的一些朋友的电话上,应用程序崩溃了(不是在模拟器中,或在我的手机中)。

我认为错误是outOfMemoryError。

但是我的图像是大约100ko的png,怎么可能呢? 如果不调整图像大小,我该怎么办才能解决问题?

我重新创建了一个非常简单的例子:

using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;

namespace TestBug
{
    [Activity (Label = "TestBug", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity
    {
        protected override void OnCreate (Bundle bundle)
        {
            base.OnCreate (bundle);
            SetContentView (Resource.Layout.Main);

            ImageView image = FindViewById<ImageView> (Resource.Id.img);    

            if (Utils.nb == 0) {
                image.SetImageResource (Resource.Drawable.img1);
            } 
            else if (Utils.nb == 1) {
                image.SetImageResource (Resource.Drawable.img2);
            }
            else if (Utils.nb == 2) {
                image.SetImageResource (Resource.Drawable.img3);
            }

            Button button = FindViewById<Button> (Resource.Id.myButton);    
            Utils.nb = Utils.nb + 1;

            button.Click += ButtonClick;
        }

        protected override void OnDestroy ()
        {
            base.OnDestroy ();
            FindViewById<ImageView> (Resource.Id.img).SetImageBitmap(null);
        }

        public void ButtonClick(object sender, EventArgs e)
        {
            var intent = new Intent (this, typeof(MainActivity));
            StartActivity (intent);
            Finish ();
        }
    }
}

main.axml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
    android:id="@+id/myButton"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />
<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:id="@+id/img" />
</LinearLayout>

Utils.cs

using System;

namespace TestBug
{
    public static class Utils
    {
        public static int nb = 0;
    }
}

0 个答案:

没有答案