我必须在ViewHolder中使用EditText中包含的文本,如下所示:
@Override
public void onClick(View v) {
holder.editTextComment = (EditText) v
.findViewById(R.id.editTextComment);
String comment = holder.editTextComment.getText()
.toString();
// String comment = new String("lol");
Calendar c = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyy");
SimpleDateFormat dt = new SimpleDateFormat("HH:mm");
String formattedDate = df.format(c.getTime());
String formattedTime = dt.format(c.getTime());
if (!comment.equalsIgnoreCase("")) {
switch (v.getId()) {
case R.id.buttonPostComment:
addItem(comment, formattedDate, formattedTime, v,
holder);
break;
}
}
但是当我尝试将edittext文本插入String时,我的程序崩溃了,为什么?
答案 0 :(得分:2)
尝试更改此行
holder.editTextComment = (EditText) v
.findViewById(R.id.editTextComment);
到
holder.editTextComment = (EditText) findViewById(R.id.editTextComment);
此EditText
未包含在您点击的Button
内,v
代表的是layout
。如果您只使用setContentView()
对v
进行充气,则应删除inflater
。如果您使用的是layout
,则可以使用v
代替null
充实的holder.editTextComment
您所拥有的内容正在为NPE
返回getText()
,因此当您致电{{1}}时,您将获得{{1}}。
答案 1 :(得分:1)
您确定以下代码会返回EditText
吗?
(EditText) v.findViewById(R.id.editTextComment);
我的猜测是,它只是将holder.editTextComment
设置为null
,因此在对其进行NullPointerException
时会呈现.getText().toString()
。