我正在尝试使用一种功能,在按下按钮时将布局添加到我的 View 中。 2 的 ID EditText
布局中的 s 添加到 List<EditText>
,因此无论添加了多少个 XML 布局实例,我都可以访问它们。但是,我无法让它正常工作。
设置 View 的主要功能:
ViewGroup view = null;
TextView addressView;
Button submit;
ImageView addHeader;
private int id = 0;
private List<EditText> editTexts = new ArrayList<EditText>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.get);
view = (ViewGroup) findViewById(R.id.getLayout);
addressView = (TextView) view.findViewById(R.id.getAddress);
submit = (Button) view.findViewById(R.id.getSubmit);
addHeader = (ImageView) view.findViewById(R.id.getHeaderAdd);
addHeader.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
addHeaderBox();
}
});
我添加布局的函数:
private void addHeaderBox() {
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.get_param, view, false);
EditText nameBox = (EditText) view.findViewById(R.id.getValue);
EditText valueBox = (EditText) view.findViewById(R.id.getName);
nameBox.setId(id++);
valueBox.setId(id++);
editTexts.add(nameBox);
editTexts.add(valueBox);
}
getValue
和 getName
是两个 EditText
的 ID s 在我的布局中(不是主要的 getLayout
)。
07-19 10:25:13.088: E/AndroidRuntime(32034): java.lang.NullPointerException
07-19 10:25:13.088: E/AndroidRuntime(32034): at myapp.httprequest.free.GETActivity.addHeaderBox(GETActivity.java:96)
07-19 10:25:13.088: E/AndroidRuntime(32034): at myapp.httprequest.free.GETActivity.access$0(GETActivity.java:88)
07-19 10:25:13.088: E/AndroidRuntime(32034): at myapp.httprequest.free.GETActivity$1.onClick(GETActivity.java:65)
第 96 行是 nameBox.setId(id++)
最佳答案
尝试:
.......
View someView = inflater.inflate(R.layout.get_param, view, false);
EditText nameBox = (EditText) someView.findViewById(R.id.getValue);
EditText valueBox = (EditText) someView.findViewById(R.id.getName);
........
关于Android:通过扩展 XML 动态添加布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563094/