今天被TabActivity折服了,在Tab的选项卡所在的activity里面调用startActivityForResult 方法,然后在该activity里面重写了onActivityResult 方法 ,不论我怎么测试 就是不执行onActivityResult 回调方法 ,在一般的activity里面却可以。最后无赖,想到会不会是TabActivity太特殊了,果不其然。
1.我将startActivityForResult 的目标Activity 的启动模式设置成了singleInstance。
调试了N久也没也没找到哪里出错,后来只好Google,不经意间看到一个随笔,说跟加载模式有关,原来,需要用这样的方法来传值的Activity,的加载模式什么都不能设置,或者设置成标准的模式,不能是singleInstance
于是乎,改之,结果还是不行,后来又发现如下解决办法:
解决办法如下:
1.通过父Activity启动其他Activity;
2.实现父Activity的onActivityResult方法,将该处接收到的请求转发给当前活动的子Activity;
3.自定义一个转发接口用来实现第2步中的转发功能;
4.子Activity中实现第3步接口中的方法用来接收返回信息;
代码如下:
1.通过父Activity启动其他Activity
1 getParent().startActivityForResult(new Intent(...), REQUEST_CODE);
2.实现父Activity的onActivityResult方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// 获取当前活动的Activity实例
Activity subActivity = getLocalActivityManager().getCurrentActivity();
//判断是否实现返回值接口
if (subActivity instanceof OnTabActivityResultListener) {
//获取返回值接口实例
OnTabActivityResultListener listener = (OnTabActivityResultListener) subActivity;
//转发请求到子Activity
listener.onTabActivityResult(requestCode, resultCode, data);
}
super.onActivityResult(requestCode, resultCode, data);
}
3.自定义接口来实现
/**
* 解决子Activity无法接收Activity回调的问题
* @author Administrator
*
*/
public interface OnTabActivityResultListener {
public void onTabActivityResult(int requestCode, int resultCode, Intent data);
}
4.子Activity需要实现onTabActivityResult方法
@Override
public void onTabActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
//实现该处逻辑 ...
}
}
终于,问题解决之,但是后来在子Tab中的ListView要实现长按弹出对话框功能,问题又来了。莫名其妙的报错,后来发现还是需要用父类去调用 this.getParent().setOnItemLongClickListener(...........)
分享到:
相关推荐
【Android无线点菜系统<源码>】是一个适用于移动开发领域的项目,主要目的是实现餐厅的电子化点菜功能。这个系统对于初学者来说是一个宝贵的参考资料,因为它提供了完整的代码实现,可以深入理解Android应用开发的...
Android模拟器是Android开发中一个非常重要的工具,能够模拟真实的Android设备,帮助开发者测试和调试应用程序。下面将对Android模拟器的命令进行详细的介绍。 一、模拟器和真机的不同之处 Android模拟器是一款...
《Android模拟器参数详解》 ...总之,Android模拟器虽然在某些功能上与真实设备有所差距,但通过深入理解和利用其参数设置,开发者可以构建一个接近真实的测试环境,从而高效地进行Android应用的开发和测试工作。
《Android开发案例驱动教程》 配套代码。 注: 由于第12,13,14章代码太大,无法上传到一个包中。 这三节代码会放到其他压缩包中。 作者:关东升,赵志荣 Java或C++程序员转变成为Android程序员 采用案例驱动模式...
错误信息中的日志记录进一步表明,在尝试启动HelloWorld项目的过程中遇到了这一问题。 #### 错误原因分析 当遇到此类错误时,问题的核心在于缺少与目标Android版本兼容的AVD。在本例中,目标版本为Android 1.5,而...
这一联盟将会支持 Google 发布的 Android 手机操作系统或者应用软件,共同开发名为 Android 的 开 放源代码的移动系统。开放手机联盟包括手机制造商、手机芯片厂商和移动运营商几类。目前,联盟成员 数 量已经达到了...
在Android开发过程中,LogCat是一个不可或缺的调试工具。它是Android系统提供的一种命令行工具,用于收集应用程序和其他系统组件的log信息,帮助开发者跟踪程序运行状态,定位和解决问题。本文将详细介绍LogCat的...
在Android开发中,String字符串数组是一种常见的数据结构,用于存储一系列相关的文本信息。在某些情况下,我们可能需要在运行时动态地向已存在的字符串数组中添加元素,而非仅仅在XML资源文件中静态定义。这就涉及到...
<uses-permission android:name="android.permission.INTERNET" /> <application> ... <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id" /> ... </...
这通常涉及到在 AndroidManifest.xml 文件中添加 `<provider>` 标签,并设置相关的属性,如 `android:mimeType`、`android:path`、`android:pathPattern`、`android:pathPrefix` 和 `android:scheme` 等。...
综上所述,这个基于Android Studio的旅游记录与分享APP涉及了众多Android开发的关键技术,包括地图集成、位置服务、数据存储、网络通信以及用户体验设计等多个方面,对于学习和提升Android开发能力具有很高的参考...
综上所述,`logback-android`作为Android开发中的日志工具,提供了强大而灵活的解决方案,能够帮助开发者更好地调试、监控和分析应用程序的行为,提高开发效率和维护性。其丰富的特性、高效的性能以及强大的扩展性使...
3. 创建AVD可以使用`android create avd --name <name> --target <target id>`,其中`<name>`是模拟器名称,`<target id>`是系统列出的平台编号。 4. 启动模拟器时,可以使用`emulator -avd <name> -sdcard ~/<name...
| -data [file] | 使用 <file> 当作用户数据的磁盘镜像 | 如果没有 -data,模拟器会在 ~/.android (Linux/Mac) 或 C:\Documents\<user>\LocalSettings\Android (Windows) 中查找文件名为” userdata.img ”的文件 | ...
在Android开发中,提供搜索历史记录提示功能是一个常见的需求,特别是在需要用户输入查询内容的应用中。这个功能可以提升用户体验,因为它允许用户快速访问他们之前搜索过的条目,而无需重新输入整个查询。本教程将...
在Android应用开发中,GreenDao是一个非常流行的ORM(对象关系映射)库,它使得数据库操作变得更加简单和高效。在本文中,我们将深入探讨如何在Android应用中使用GreenDao进行数据管理和查询。 首先,让我们来看一...
在Android开发中,理解和正确处理这类资源编译错误至关重要,因为它直接影响到应用的构建和运行。保持良好的编程习惯,遵循XML规范,以及及时更新和优化代码,可以减少这类问题的发生。同时,利用Android Studio的...
总结起来,Android Debug Bridge(ADB)是Android开发者的重要辅助工具,它提供了一种便捷的手段来与Android设备进行交互,极大地简化了开发和调试过程。掌握ADB的使用,能有效提升开发效率,解决各种疑难问题。
通过ADB,开发者可以进行设备管理、应用安装调试等操作,是Android开发过程中不可或缺的一部分。 #### 二、常用ADB命令详解 ##### 1. 列出所有Android平台 ``` android list targets ``` 此命令用于列出当前安装的...
在Android应用开发中,搜索框(SearchView)是不可或缺的一部分,尤其对于那些需要提供用户查询功能的应用来说。本文将深入探讨如何在Android中创建一个带有历史记录功能的搜索框,并结合给定的"android搜索框,带...