Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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 将随机图像设置为imageview android_Java_Android_Bitmap_Imageview - Fatal编程技术网

Java 将随机图像设置为imageview android

Java 将随机图像设置为imageview android,java,android,bitmap,imageview,Java,Android,Bitmap,Imageview,我想制作一个位图数组,然后在我的活动中将一个随机元素设置为5个ImageView Bitmap[] vector = new Bitmap[52]; int[] randomNumbers = new int[5]; private void createImages() { vector [0] = BitmapFactory.decodeResource(getResources(), R.drawable.aphoto); vector [1] = B

我想制作一个位图数组,然后在我的活动中将一个随机元素设置为5个ImageView

Bitmap[] vector = new Bitmap[52];
int[] randomNumbers = new int[5];

private void createImages() {

        vector [0] = BitmapFactory.decodeResource(getResources(), R.drawable.aphoto);

        vector [1] = BitmapFactory.decodeResource(getResources(), R.drawable.anotherphoto);
        vector [2] = BitmapFactory.decodeResource(getResources(), R.drawable.backinbusiness);
        vector [3] = BitmapFactory.decodeResource(getResources(), R.drawable.heythere);
        vector [4] = BitmapFactory.decodeResource(getResources(), R.drawable.whasup);

// and so on
}

private boolean randomNumbersContains(int n, int count) {
        for(int i = 0; i < count; i++)
            if(randomNumbers[i] == n)
                return true;
        return false;
    }

    private void getRandomNumbers() {
        Random r = new Random();
        int nr;
        randomNumbers[0] = r.nextInt(40) + 1;

        for(int i = 1; i < 5; i ++) {
            do {
                nr = r.nextInt(40) + 1;
            } while (randomNumbersContains(nr, i));

            randomNumbers[i] = nr;
        }
    }

@Override
    public void onClick(View v) {
        getRandomNumbers();

        iv1.setImageBitmap(vector [randomNumbers[0]]);
        iv2.setImageBitmap(vector [randomNumbers[1]]);
        iv3.setImageBitmap(vector [randomNumbers[2]]);
        iv4.setImageBitmap(vector [randomNumbers[3]]);
        iv5.setImageBitmap(vector [randomNumbers[4]]);
    }
Bitmap[]vector=新位图[52];
int[]随机数=新的int[5];
私有void createImages(){
向量[0]=BitmapFactory.decodeResource(getResources(),R.drawable.aphoto);
vector[1]=BitmapFactory.decodeResource(getResources(),R.drawable.anotherphoto);
向量[2]=BitmapFactory.decodeResource(getResources(),R.drawable.backinbusiness);
vector[3]=BitmapFactory.decodeResource(getResources(),R.drawable.heythere);
vector[4]=BitmapFactory.decodeResource(getResources(),R.drawable.whasup);
//等等
}
私有布尔随机数包含(整数n,整数计数){
for(int i=0;i
这是我的尝试。每次点击按钮时,我希望从阵列中再获得5张卡

我不知道为什么我的应用程序会崩溃。请帮忙

以下是日志:

07-09 11:34:50.059    8307-8307/com.blabla.bla.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.blabla.bla.app, PID: 8307
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.blabla.bla.app/com.blabla.bla.app.PlayActivity}: android.view.InflateException: Binary XML file line #52: Error inflating class <unknown>
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: android.view.InflateException: Binary XML file line #52: Error inflating class <unknown>
            at android.view.LayoutInflater.createView(LayoutInflater.java:633)
            at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
            at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378)
            at android.app.Activity.setContentView(Activity.java:2145)
            at com.symplyfyweb.gherghina.oldschoolwesternpoker.PlayActivity.onCreate(PlayActivity.java:41)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Constructor.newInstance(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
            at android.view.LayoutInflater.createView(LayoutInflater.java:607)
            at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
            at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378)
            at android.app.Activity.setContentView(Activity.java:2145)
            at com.blabla.bla.app.PlayActivity.onCreate(PlayActivity.java:41)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: java.lang.OutOfMemoryError: Failed to allocate a 13068012 byte allocation with 1329116 free bytes and 1297KB until OOM
            at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
            at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
            at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609)
            at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
            at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:988)
            at android.content.res.Resources.loadDrawableForCookie(Resources.java:2474)
            at android.content.res.Resources.loadDrawable(Resources.java:2381)
            at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
            at android.widget.ImageView.<init>(ImageView.java:146)
            at android.widget.ImageView.<init>(ImageView.java:135)
            at android.widget.ImageView.<init>(ImageView.java:131)
            at java.lang.reflect.Constructor.newInstance(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
            at android.view.LayoutInflater.createView(LayoutInflater.java:607)
            at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
            at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378)
            at android.app.Activity.setContentView(Activity.java:2145)
            at com.blabla.bla.app.PlayActivity.onCreate(PlayActivity.java:41)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5257)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
07-09 11:34:57.310    8307-8318/com.blabla.bla.app I/art﹕ Clamp target GC heap from 64MB to 64MB
07-09 11:34:50.059 8307-8307/com.blabla.bla.app E/AndroidRuntime﹕ 致命异常:主
进程:com.blabla.bla.app,PID:8307
java.lang.RuntimeException:无法启动活动组件信息{com.blabla.bla.app/com.blabla.bla.app.app.PlayActivity}:android.view.InflateException:二进制XML文件行#52:膨胀类时出错
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
在android.app.ActivityThread.access$800(ActivityThread.java:151)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)上
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:135)
位于android.app.ActivityThread.main(ActivityThread.java:5257)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
原因:android.view.InflateException:二进制XML文件行#52:膨胀类时出错
在android.view.LayoutInflater.createView(LayoutInflater.java:633)
在com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)上
位于android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
在android.view.LayoutInflater.充气(LayoutInflater.java:504)
在android.view.LayoutInflater.inflate(LayoutInflater.java:414)
在android.view.LayoutInflater.充气(LayoutInflater.java:365)
位于com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378)
位于android.app.Activity.setContentView(Activity.java:2145)
在com.symplyfyweb.gherghina.oldschool-westernpoker.PlayActivity.onCreate(PlayActivity.java:41)上
位于android.app.Activity.performCreate(Activity.java:5990)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
在android.app.ActivityThread.access$800(ActivityThread.java:151)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)上
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:135)
位于android.app.ActivityThread.main(ActivityThread.java:5257)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
原因:java.lang.reflect.InvocationTargetException
位于java.lang.reflect.Constructor.newInstance(本机方法)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:288)
位于android.view.LayoutInflater.createView(LayoutInflater.java:607)
在com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)上
位于android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
在
Caused by: java.lang.OutOfMemoryError: Failed to allocate a 13068012 byte allocation with 1329116 free bytes and 1297KB until OOM
Bitmap bitmap = vector [randomNumbers[1]];
bitmap.recycle();
imageView.setImageBitmap(bitmap);