过去,每当我创建自定义表格布局时,我都会在java中创建子视图,然后使用tableRow.addView(childView)
将它们添加到表中。现在,我不是手工创建所有孩子的视图,而是用xml创建它们,然后将它们膨胀到tableRow。
所以例如我做
RelativeLayout gameView = (RelativeLayout) mInflater.inflate(R.layout.my_game,
new RelativeLayout(context));
… //edits to gameView
gameView.requestLayout();
((ViewGroup) gameView.getParent()).removeAllViews();
tableRow.addView(gameView);
addView(tableRow);
我的问题是这样的:如果我遗漏了行((ViewGroup) gameView.getParent()).removeAllViews()
,那么我得到一个错误,即该视图已经有父,并且我必须首先在孩子的父母上调用revomeView
。无法找到任何名为removeView
的方法,我使用removeAllViews
。但是当我这样做时,我在父级上得到一个NullPointerException。
所以问题是:如何给视图充气然后将其添加到表格布局?
答案 0 :(得分:1)
尝试更改此行
RelativeLayout gameView = (RelativeLayout) mInflater.inflate(R.layout.my_game,
new RelativeLayout(context));
到
RelativeLayout gameView = (RelativeLayout) mInflater.inflate(R.layout.my_game,
null);