Android 一个Activity调用另一个Activity中的公有方法

本文讲述了在Android开发中遇到的一个问题:从Activity B返回Activity A并尝试调用A的公有方法更新TextView内容时,出现空指针异常。尝试了更改启动模式、实例化TextView等方法,最终通过使用startActivityForResult和onActivityResult方法成功解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

Activity A

A中有一个TextView控件  ,一个Button控件,点击Button控件激活Activity  B,还有一个公有方法c ,c 传入一个String参数s 将s 显示到TextView上

Activity B
一个EditView控件 一个确定Button,点击Button跳转到A并将EditView输入的内容显示到TextView控件上

开始时,思路

在B中Button的setOnClickListener方法中 {stratActivity(new Intent(getApplicationContext,A.class)) }  接着new A() 调用A的公有方法c 

结果:返回了A界面,但无信息显示

报告空指针异常

考虑到激活B时的A和new的A的实例对象不一致,修改A的启动模式为singleTask,通过打印测试发现实例对象是一样的

结果:返回了A界面,但无信息显示

但还是报告空指针异常

于是在A中的c方法中打印TextView的实例对象,发现TextView为空(ps:c中调用了TextView的setText方法)

疑问一:为什么为空?

发现c中的TextView为空,于是在c中实例化TextView,调用findViewById

又报空指针异常

看打印的异常信息,TextView成功实例化,空指针与findViewId有关  ???????????

更奇怪的是激活B的A和由B回显的A两个实例对象竟然不一致

 

思考良久,不得其解

 

最后使用Aativity中的startActivityForResult和onActivityResult完美实现

 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值