Android findViewWithTag在TableLayout中返回null

Android findViewWithTag在TableLayout中返回null,android,android-tablelayout,Android,Android Tablelayout,在我的活动中,有一个类似记分板的表,因此我使用findViewWithTag查找我想要更快编辑的视图,并使代码更清晰,但返回空值 错误是: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object refe

在我的活动中,有一个类似记分板的表,因此我使用
findViewWithTag
查找我想要更快编辑的视图,并使代码更清晰,但返回空值

错误是:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
        at *.onCreate(score.java:52)

java文件:


公开课分数扩展活动{
创建时的公共void(Bundle savedInstanceState){
int i;
super.onCreate(savedInstanceState);
setContentView(R.layout.score);
按钮组1=findViewById(R.id.team1);
team1.setOnClickListener(新的toggleButtonClicklListener());
team1.setText(新的StringBuilder(String.valueOf(SharedManager.names[0])).append(“\n”).append(SharedManager.names[1]).toString());
按钮组2=findViewById(R.id.team2);
team2.setOnClickListener(新的toggleButtonClicklListener());
team2.setText(新的StringBuilder(String.valueOf(SharedManager.names[2])).append(“\n”).append(SharedManager.names[3]).toString());

对于(i=17;i,您在布局中声明的标记是字符串,在java代码中您正在搜索具有int值的标记

更改此项:

Button button = team1.getRootView().findViewWithTag(i);
为此:

Button button = team1.getRootView().findViewWithTag(String.valueOf(i));

team2
的根视图是TableRow,而不是TableLayout。糟糕的是,是team1我复制错了,它们具有相同的根。所以您遇到了问题?您只需在TableLayout上查找dviewById,然后直接在其上使用findViewWithTag就更容易了。
Button button = team1.getRootView().findViewWithTag(i);
Button button = team1.getRootView().findViewWithTag(String.valueOf(i));