java - Android 的 Java 中一个非常奇怪的 for 循环错误?

标签 java android

我正在尝试更改按钮数组的属性,但是我遇到了一些非常奇怪的错误。我试图循环遍历按钮来编辑每个按钮的高度属性,但是当我设置 for 循环 (i=0; i<3; i++) 时,buttonSkater[i].setHeight(buttonHeight);结果好像有9个按钮被改变了!当我设置 i<14(有 14 个按钮)时,应用程序会崩溃并出现 NullPointerException。

package com.rollerderby.lineuptracker;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.Button;


public class Setup extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.setup); 

        Button[] buttonSkater = new Button[14]; 
        buttonSkater[0] = (Button) findViewById(R.id.buttonSkater1);
        buttonSkater[1] = (Button) findViewById(R.id.buttonSkater2);
        buttonSkater[2] = (Button) findViewById(R.id.buttonSkater3);

        int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); 
        int buttonHeight = (screenHeight-60)/14; 


        for(int i=0; i<14; i++)
        {
            buttonSkater[i].setHeight(buttonHeight);
        }


    }
}

这似乎是一个非常奇怪的错误...我是否遗漏了一些明显的东西?

(通过为新按钮创建空间来调整数组大小错误?)

最佳答案

纯粹基于您的代码示例,您尝试访问仅设置了 3 个索引(0 到 2)的数组中的第 3 到 14 个元素,其他索引(默认情况下)初始化为 null。至于 14 个按钮,它们可能是 3 个按钮的 14 个实例吗?

关于java - Android 的 Java 中一个非常奇怪的 for 循环错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8607844/

相关文章:

android - 如何将后台任务带到 hive 下方的前台?

iphone - 完善用户界面

java - 如何从 recyclerView 和 sqlite 数据库中删除行?

android - 由于 "Privacy policy link invalid or missing",Google 拒绝了应用程序

android - AssetManager 列表不返回任何内容

java - 输出从美元到人民币的货币表

java - Gradle 扁平项目在一个项目中包含多个 Jars

java - 使用 spring-boot-starter-integration 时找不到 org.springframework.integration.Message

java - 到底什么是资源泄漏?

java - N 层发布/订阅者设计问题