如果我setOnClickListener从数组按钮NullPointerException



我在循环中创建了一个按钮数组。它似乎工作,但如果我添加OnClickListener到每个按钮,我得到一个NullPointerException。我该如何解决这个问题?

这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_layout);
    fieldModel=new Field();
    buttons=new Button[10][10];
    for(int i=0; i<10; i++) {
        for (int j = 0; j < 10; j++) {
            String buttonID = "button" + i + j;
            int resID = getResources().getIdentifier(buttonID, "id", getPackageName());
            buttons[i][j] = ((Button) findViewById(resID));
            buttons[i][j].setOnClickListener(new View.OnClickListener() { // <-- I get the exception here...
                @Override
                public void onClick(View v) {
                    "some action"
        }
});

Main_layout,有100个按钮命名为'button00'到'button99'?如果缺少任何一个,它将导致在您所标记的行上出现空指针。

如果它适合你的应用程序,也值得考虑使用GridView,或者使用GridLayoutManager的RecyclerView,而不是手动添加按钮。

你得到异常,因为id不包含在活动布局。如果你想通过findViewById匹配Button对象,你必须首先在布局文件中添加它们,或者,如果你已经有了它们,确保你在findViewById (resId)中使用的Id是正确的。

最新更新