Activity回传值报错:Failure delivering result ResultInfo{who=null,request=7,result = 0,data=null}...

本文主要是介绍Activity回传值报错:Failure delivering result ResultInfo{who=null,request=7,result = 0,data=null}...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Activity  A   -----值------->  Activity  B   -----值----->  Activity  A

场景:当A跳转到B,再从B直接点击返回按钮时,报错。
package com.itheima.smsSender;import android.os.Bundle;
import android.telephony.gsm.SmsManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.app.Activity;
import android.content.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) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取控件
et_number = (EditText) findViewById(R.id.et_number);
et_content = (EditText) findViewById(R.id.et_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 = SmsManager.getDefault();
String destinationAddress = et_number.getText().toString().trim();
String data = et_content.getText().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
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 7:
String number = data.getStringExtra("number");
et_number.setText(number);
break;
case 8:
String sms = data.getStringExtra("quickInfo");
et_content.setText(3);
break;
}
}
}

 

错误信息:
MainActivity程序73行报空指针异常。
String number = data.getStringExtra("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;
import android.content.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
super.onCreate(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", persons.get(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
super.onActivityResult(requestCode, resultCode, data);
if (data == null) { //判断数据是否为空,就可以解决这个问题
return;
} else {
switch (requestCode) {
case 7:
String number = data.getStringExtra("number");
et_number.setText(number);
break;
case 8:
String sms = data.getStringExtra("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
super.onActivityResult(requestCode, resultCode, data);
switch (resultCode) {
case 1:
String number = data.getStringExtra("number");
et_number.setText(number);
break;
case 3:
String sms = data.getStringExtra("quickInfo");
et_content.setText(3);
break;
}
}
}

转载于:https://www.cnblogs.com/aimqqroad-13/p/5801332.html

这篇关于Activity回传值报错:Failure delivering result ResultInfo{who=null,request=7,result = 0,data=null}...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/489609

相关文章

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

CentOS下mysql数据库data目录迁移

https://my.oschina.net/u/873762/blog/180388        公司新上线一个资讯网站,独立主机,raid5,lamp架构。由于资讯网是面向小行业,初步估计一两年内访问量压力不大,故,在做服务器系统搭建的时候,只是简单分出一个独立的data区作为数据库和网站程序的专区,其他按照linux的默认分区。apache,mysql,php均使用yum安装(也尝试

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed 文章目录 DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed问题解决办法 问题 使用 DBeaver 连接 MySQL 数据库的时候, 一直报错下面的错误 Public Key Retrieval is

使用Spring Boot集成Spring Data JPA和单例模式构建库存管理系统

引言 在企业级应用开发中,数据库操作是非常重要的一环。Spring Data JPA提供了一种简化的方式来进行数据库交互,它使得开发者无需编写复杂的JPA代码就可以完成常见的CRUD操作。此外,设计模式如单例模式可以帮助我们更好地管理和控制对象的创建过程,从而提高系统的性能和可维护性。本文将展示如何结合Spring Boot、Spring Data JPA以及单例模式来构建一个基本的库存管理系统

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef‘ of undefined“

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef’ of undefined” 最近用vue做的一个界面,引入了一个子组件,在父组件中调用子组件的方法时,报错提示: [Vue warn]: Error in v-on handler: “TypeError: Cannot read property ‘methods

ORACLE语法-包(package)、存储过程(procedure)、游标(cursor)以及java对Result结果集的处理

陈科肇 示例: 包规范 CREATE OR REPLACE PACKAGE PACK_WMS_YX IS-- Author : CKZ-- Created : 2015/8/28 9:52:29-- Purpose : 同步数据-- Public type declarations,游标 退休订单TYPE retCursor IS REF CURSOR;-- RETURN vi_co_co

15 组件的切换和对组件的data的使用

划重点 a 标签的使用事件修饰符组件的定义组件的切换:登录 / 注册 泡椒鱼头 :微辣 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-

12C 新特性,MOVE DATAFILE 在线移动 包括system, 附带改名 NID ,cdb_data_files视图坏了

ALTER DATABASE MOVE DATAFILE  可以改名 可以move file,全部一个命令。 resue 可以重用,keep好像不生效!!! system照移动不误-------- SQL> select file_name, status, online_status from dba_data_files where tablespace_name='SYSTEM'