package com.itheima.smsSender;import android.os.Bundle; lephony.gsm.SmsManager; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.app.Activity; t.Intent;/** * * 短信发送器: 三个界面 --- 三个Activity --- listview * */public class MainActivity extends Activity implements OnClickListener {private EditText et_number; private EditText et_content; private Button bt_select; private Button bt_sendSms; private Button bt_quickReply;@Override protected void onCreate(Bundle savedInstanceState) { Create(savedInstanceState); setContentView(R.layout.activity_main); // 获取控件 et_number = (EditText) findViewById(_number); et_content = (EditText) findViewById(_content); bt_select = (Button) findViewById(R.id.bt_select); bt_sendSms = (Button) findViewById(R.id.bt_sendSms); bt_quickReply = (Button) findViewById(R.id.bt_quickReply);// 添加点击事件 bt_select.setOnClickListener(this); bt_sendSms.setOnClickListener(this); bt_quickReply.setOnClickListener(this); }@SuppressWarnings("deprecation") @Override public void onClick(View v) { // TODO Auto-generated method stub int id = v.getId();switch (id) { case R.id.bt_select: Intent contact_intent = new Intent(getApplicationContext(), ContactActivity.class); startActivityForResult(contact_intent, 7); break; case R.id.bt_sendSms: SmsManager manager = Default(); String destinationAddress = Text().toString().trim(); String data = Text().toString().trim(); manager.sendTextMessage(destinationAddress , null, data , null, null); break; case R.id.bt_quickReply: Intent quick_intent = new Intent(getApplicationContext(), QuickReplyActivity.class); startActivityForResult(quick_intent, 8); break; }} @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub ActivityResult(requestCode, resultCode, data); switch (requestCode) { case 7: String number = StringExtra("number"); et_number.setText(number); break; case 8: String sms = StringExtra("quickInfo"); et_content.setText(3); break; } } }
错误信息: MainActivity程序73行报空指针异常。
String number = StringExtra("number");
错误分析: package com.itheima.smsSender;import java.util.ArrayList;import com.itheima.smsSender.adapter.MyAdapter; import com.itheima.smsSender.bean.Person;import android.app.Activity; t.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView;public class ContactActivity extends Activity { ArrayList<Person> persons = new ArrayList<Person>(); @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub Create(savedInstanceState); //加载布局文件 setContentView(R.layout.activity_contact); //初始化数据 --- 改进用内容提供者获取联系人 for(int i=0;i<30;i++){ Person person = new Person("person"+i,"1854678925"+i); persons.add(person); } //获取控件 ListView lv_contact = (ListView) findViewById(R.id.lv_contact); //添加适配器 lv_contact.setAdapter(new MyAdapter(persons,this)); //为适配器添加点击事件 lv_contact.setOnItemClickListener(new OnItemClickListener() {@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.putExtra("number", (position).phone); setResult(1, intent); finish(); } }); } }
当B直接点击返回键返回到A时,未走上面34行的点击事假,所以返回的Intent为初始值null,所以在走MainActivity的73行代码回报空指针异常。requestCode一开始就被复制了,所以一定会匹配case。 解决办法: 方法①:
protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub ActivityResult(requestCode, resultCode, data); if (data == null) { //判断数据是否为空,就可以解决这个问题 return; } else { switch (requestCode) { case 7: String number = StringExtra("number"); et_number.setText(number); break; case 8: String sms = StringExtra("quickInfo"); et_content.setText(3); break; } } }
方法②:由于没有走点击事件里的代码,所以resultCode没有被赋值,仍然为初始值0,所以不会走case:1或case:3,就不会报错了。
protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub ActivityResult(requestCode, resultCode, data); switch (resultCode) { case 1: String number = StringExtra("number"); et_number.setText(number); break; case 3: String sms = StringExtra("quickInfo"); et_content.setText(3); break; } } }
转载于:.html
本文发布于:2024-02-02 22:09:24,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170688296146763.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |