Android Button ArrayList onClickListener不起作用。为什么?

时间:2015-12-06 21:56:02

标签: java android arraylist onclicklistener

我为按钮和桌子创建了一个arraylist。

private ArrayList<Button> btDec = new ArrayList<Button>();
private ArrayList<TableRow> tr = new ArrayList<TableRow>();

然后我想创建一个新的按钮和tablerow,并使用onCreate()方法中的以下代码将tem添加到tablelayout。

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            btDec.add(new Button(this));
            tr.add(new TableRow(this));

            int i = tr.size() - 1;
            btDec.get(i).setId(i);
            btDec.get(i).setText("-");
            tr.get(i).addView(btDec.get(i));
            lo.addView(tr.get(i), new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT));
        }
    });

所有这些代码都运行正常。 但是下面的代码(也在onCreate()方法中)不起作用。如果按下按钮,则没有任何反应,并且它不会在Logcat中打印任何内容。

    for(int i = 0; i < tr.size(); i++)
    {
        btDec.get(i).setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View view)
            {
                Log.i("ButtonListener", "test");
            }
        });
    }

请帮帮我。

1 个答案:

答案 0 :(得分:0)

问题在于此代码

for(int i = 0; i < tr.size(); i++)
    {
        btDec.get(i).setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View view)
            {
                Log.i("ButtonListener", "test");
            }
        });
    }

你不能在onCreate()中执行此操作,因为tr列表中有空!您应该在创建按钮时添加onClick侦听器。