问题描述
- 请问在调用自定义控件的button事件时会有空指针错误
-
出错的代码如下,是菜单中的按钮事件,点击就会出现空指针错误。如果把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个对象
时间: 2024-10-25 08:26:03