【发布时间】:2013-02-01 13:34:30
【问题描述】:
我对 Android 比较陌生,完全不知道如何在我的自定义视图中访问我以编程方式定义的相对布局(在片段中定义)。
在片段中,这是我所拥有的:
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1, container,false);
RelativeLayout rl1 = new RelativeLayout(view.getContext());
TextView tView1 = new TextView(view.getContext());
tView1.setText("test");
rl1.addView(tView1);
rl1.setId(1);
tView1.setId(2);
...
}
然后在自定义视图中,我通过 id 调用相对的 Layout 和 TextView。当我尝试做任何事情时,我得到一个 NullPointer 异常。
...
RelativeLayout rl1 = (RelativeLayout) findViewById(1);
TextView tView1 = (TextView) findViewById(2);
tView1.getText();
上面的代码显示尝试在 TextView 上 .getText(),但我对 RelativeLayout 所做的任何事情也会导致 NullPointer 异常。
所以基本上,看起来我没有正确找到 RelativeLayout 和 TextViews。 仅供参考,我已经看过 this similar question,但它不适用于这里,我的构造函数已经正确设置。
【问题讨论】:
-
好的,我已经添加了更多代码。你能给我具体的命令/文件类型来添加它吗?是不是类似于
view.addView(rl1)?还是将其添加到 Fragment1 的 .xml 文件中? -
在下面查看我的答案。如果你想保持这种动态,除了片段布局的初始膨胀之外,xml 并没有真正涉及。正如我所写,您需要转换为布局,因为
addView()未为View类定义。
标签: android nullpointerexception fragment android-relativelayout findviewbyid