我还是一个初学者,这是我在论坛上的第一篇文章,如果问题的格式不正确,请抱歉。 我在名为 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/