如果剩余行数为零则打印消息

时间:2016-02-16 15:23:19

标签: android

当我点击btn2时,会按预期删除行/子项。但是,当没有剩余子项时,尽管检查了getChildCount()的非零值,应用程序仍会崩溃。为什么会这样?

  btn2.setOnClickListener(new View.OnClickListener() {
        int j= t1.getChildCount();

        @Override
        public void onClick(View v)
        {
              if(j==0) // doesn't work
              {
                    Toast.makeText(
                          create_form.this,
                          "Can not delete more rows",
                          Toast.LENGTH_LONG
                    ).show();
              }
              else 
              {
                    TableRow lastRow = (TableRow) t1.getChildAt(t1.getChildCount() - 1);
                    TableRow secondlastRow = (TableRow) t1.getChildAt(t1.getChildCount() - 2);
                    t1.removeView(lastRow);
                    t1.removeView(secondlastRow);
              }
        }
  });

3 个答案:

答案 0 :(得分:0)

  1. 删除行后,您不会更新j
  2. 您要删除两行,但要检查是否至少有一行。如果行数是奇数,则当只剩下一行时,它将尝试删除两行。你也应该检查一下。

答案 1 :(得分:0)

int j= t1.getChildCount();放在onClick方法中。在您的情况下,j仅在您的匿名类被实例化时分配一次。

但是,只要用户点击按钮,就会调用onClick方法。

答案 2 :(得分:0)

通过改变if条件

起作用
if (j <2)


 {
                    Toast.makeText(
                            create_form.this,
                            "Can not delete more rows",
                            Toast.LENGTH_LONG
                    ).show();
                }