写的一个Android对话框,点击按钮获取EditText里面的值,这里一直报空指针异常,研究了很长时间终于解决了。
异常如下:
我原来的代码:
//更新对话框
private void updateDialog(final String id){
TableLayout updatemsg = (TableLayout)getLayoutInflater().inflate(R.layout.updatemsg, null);
new AlertDialog.Builder(this)
.setTitle("更新该条信息")
.setView(updatemsg)
.setPositiveButton("更新",new OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
String musicN = ((EditText)findViewById(R.id.musicN)).getText().toString();
String singerN = ((EditText)findViewById(R.id.singerN)).getText().toString();
updateData(db,id,musicN,singerN);
}
})
.setNegativeButton("取消", new OnClickListener(){
public void onClick(DialogInterface dialog,int which){
}
})
.create()
.show();
}
对话框中引入了另一个xml配置文件updatemsg.xml:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TableRow>
<TextView
android:layout_width="100dip"
android:layout_height="wrap_content"
android:text="音乐名"
android:textSize="30px"
android:textColor="#ffffff" />
<EditText
android:id="@+id/musicN"
android:layout_width="100dip"
android:layout_height="wrap_content" />
</TableRow>
<TableRow>
<TextView
android:layout_width="100dip"
android:layout_height="wrap_content"
android:text="歌手"
android:textSize="30px"
android:textColor="#ffffff" />
<EditText
android:id="@+id/singerN"
android:layout_width="100dip"
android:layout_height="wrap_content" />
</TableRow>
</TableLayout>
,
问题解决
出错原因就是这个引入的xml
在通过findViewById找EditText的时候,它是从原来的布局文件里面找的,而不是对话框的布局文件,所以当然要报空指针异常
怎样让才能找到对话框的布局文件呢?
把那两句改成;
String musicN = ((EditText)updatemsg.findViewById(R.id.musicN)).getText().toString();
String singerN = ((EditText)updatemsg.findViewById(R.id.singerN)).getText().toString();