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));