我正在尝试为我正在制作的Android应用程序动态添加和删除TextView,但我遇到设置困难并获取TextView的ID。我似乎得到了最后两行代码的空指针异常(et.setText和ll.removeView)。有没有人对如何动态设置和获取textview的ID有任何建议?显然.setId似乎不起作用,或者更可能的是,我做错了。
//surrounding non-relevant code removed
EditText et = (EditText) view.findViewById(R.id.edittext_tags);
et.setText("");
TextView nTv = new TextView(view.getContext());
LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lparams.setMargins(10, 0, 0, 0);
nTv.setLayoutParams(lparams);
nTv.setId(tag_id);
nTv.setText(str.substring(0, str.length()-1));
nTv.setTextColor(Color.BLUE);
nTv.setTextSize(20);
final LinearLayout linl = (LinearLayout) view.findViewById(R.id.linear_layout_tags);
linl.addView(nTv);
nTv.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
EditText et = (EditText) view.findViewById(R.id.edittext_tags);
TextView t = ((TextView)v);
et.setText(t.getText().toString());
linl.removeView(v);
}
});
答案 0 :(得分:1)
TextView
不包含布局中的所有子项LinearLayout
。制作linl
final
,然后您可以在nTV
的{{1}}中使用它(只要OnClickListener
包含布局。如果没有,您就是需要做出一些关于你想要实现什么的决定 - 早些时候对布局的引用可能会有用。)
view
使用您的方法不需要id,因为您总是引用View。
但是,如果您想使用视图(非常多余的示例,但这是为了解释):
final LinearLayout linl = (LinearLayout) view.findViewById(R.id.linear_layout_tags);
linl.addView(nTv);
nTv.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
EditText et = (EditText) linl.findViewById(R.id.edittext_tags);
TextView t = ((TextView)v);
et.setText(t.getText().toString());
linl.removeView(v);
}