java - 将数据传递到主 Activity 时尝试写入空数组错误

标签 java

我还是一个初学者,这是我在论坛上的第一篇文章,如果问题的格式不正确,请抱歉。 我在名为 DatabaseTagWalk 的类中有一个资源数组,我用它来查找 MainActivity 类中按钮的 id。

这是我存储 id 的类(在 Activity_main.xml 文件中,我创建了 6 个按钮,并为它们分配了与此处相同的名称

public class DatabaseTagWalk {

    int[] iconWalkId;

    public DatabaseTagWalk(){

        iconWalkId = new int[6];

        iconWalkId[0] = R.id.topsightswalk;
        iconWalkId[1] = R.id.literarypariswalk;
        iconWalkId[2] = R.id.secretpassageswalk;
        iconWalkId[3] = R.id.picnictimewalk;
        iconWalkId[4] = R.id.joggitwalk;
        iconWalkId[5] = R.id.deluxegardenswalk;
    }
}

这是主要的 Activity 类,我在其中查找按钮的 id 以设置特定文本并指定单击按钮时使用的参数

public class MainActivity extends AppCompatActivity {

    DatabaseWalks listofwalks;
    DatabaseTagWalk tagWalk;
    Button[] buttons;
    int buttonClicked;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listofwalks = new DatabaseWalks();
        tagWalk = new DatabaseTagWalk();

        for (int i = 0; i < listofwalks.walkList.length; i++) {

            buttons[i] = (Button) findViewById(tagWalk.iconWalkId[i]);
            buttons[i].setText(listofwalks.walkList[i].returnWalk());
            setOnClick(buttons[i], tagWalk.iconWalkId[i]);
        }
    }

    public void setOnClick(Button button, final int buttonTag ){
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                buttonClicked = buttonTag;
                Intent startingGame = new Intent("android.intent.action.SECONDACTIVITY");
                startingGame.putExtra("buttonTag", buttonClicked);
                startActivity(startingGame);
            }
        });
    }
}

当我运行应用程序时,出现错误:

MainActivity 中的“尝试写入空数组”:

buttons[i] = (Button) findViewById(tagWalk.iconWalkId[i]);

最佳答案

您没有初始化按钮列表。您告诉了该变量存在,但您没有分配任何值。

更改线路:

Button[] buttons;

至(如果您知道大小 - 例如 10):

Button[] buttons = new Button[10];

或者如果您想要基于 walkList 大小:

// After this line
listofwalks = new DatabaseWalks();

// Add new line, because here you know the list size
buttons = new Button[listofwalks.walkList.length];

关于java - 将数据传递到主 Activity 时尝试写入空数组错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55423859/

相关文章:

java - 如何从 GUI 启动 Jzy3d 图?

java - 返回 ArrayList 的 SOAP 响应

java - java中多线程场景下的列表更新

java - 在 Java 运行时将对象作为成员变量添加到新类中

java - 不使用 java.util.Date 的 Java 中的纳秒级时间

java - 无法在应用引擎中保留 jpa 实体

java - 将 List<Integer> 元素移动到列表末尾

java - 此代码是否适用于二叉树中的欧拉之旅?

java - 格式化 100 以下的数字,前面加 0

java - 坚持使用 JAXB - 解码 XML 异常