出错的代码如下,是菜单中的按钮事件,点击就会出现空指针错误。如果把setOnClickListener注释掉就不会出错。请问各位为什么会报错呢?代码如下。
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case 1:
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.tel_dialog,
(ViewGroup) findViewById(R.id.dialog));
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("拨打电话");
builder.setIcon(android.R.drawable.ic_dialog_info);
builder.setView(layout);
tel = (EditText)findViewById(R.id.telNum);
dialing = (Button)findViewById(R.id.dialing);
cancel = (Button)findViewById(R.id.cancel);
dialing.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String telNum = tel.getText().toString();
Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+telNum));
startActivity(intent);
}
});
cancel.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
builder.show();
break;
case 2:
MainActivity.this.finish();
break;
}
return true;
}
不胜感激!
为了程序的健壮性,在使用前最好判断一下是否为空?
为空的原因,需要进一步判断:是偶尔出现,还是必现?如果是必现,则应该控件ID的原因;如果是偶尔出现,可能是程序中其它代码有问题导致的,如:越界。
我想你应该要这样来获取菜单界面上面的控件
tel = (EditText)layout.findViewById(R.id.telNum);
dialing = (Button)layout.findViewById(R.id.dialing);
cancel = (Button)layout.findViewById(R.id.cancel);
如果我想得没错的话这几个控件都是layout这个view里面的
空指针错误
dialing.setOnClickListener
cancel.setOnClickListener
那就是上面这2个对象是null
没有取出来这2个对象