android onResultActivity不执行原因总结

插一个注意点.在用ArrayAdapter的时候数据那里的类型必须是List<String> 不能是ArrayList<String>

1.在A.Activity中调用startActivityForResult()启动B.Activity后,再B.Activity中调用setResult() 方法后,A.Activity中的onResultActivity将会执行。

但遇到下列问题就不会执行了:

  startActivityForResult()用法参照:http://www.cnblogs.com/liangstudyhome/p/3708296.html

  •   Activity的启动方式是singleTask 或者是singleMode
  •   在传递的Intent中requescode小于0
  • *** 就是在调startActivityForResult()的Activity在一个GroupActivity中( 其实是执行了GroupActivity的onResultActivity方法)

2.对上述问题的解决办法:

  •   将Activity的启动方式改成stander

1. tab activity(想获取onResultActivity值的子Activity)中使用

  

1 getParent().startActivityForResult(intent,REQUEST);  

2. 当子activity.finish 返回时,在ActivityGroup实现onActivityResult,内容类似于:

  

1     @Override
2         protected void onActivityResult(int requestCode, int resultCode, Intent data) {
3             // 向下传递
4         YourActivity currentActivity = (YourActivity) getLocalActivityManager()
5                 .getCurrentActivity();
6         currentActivity.onChildActivityResult(requestCode, resultCode, data);
7         }  

onChildActivityResult是一个你自己实现的方法,用来处理返回结果的。

具体的一个例子:

  

 1 @SuppressWarnings("deprecation")
 2     private void tabChange(CompoundButton buttonView, boolean isChecked) {
 3         if (isChecked) {
 4             containerBordy.removeAllViews();
 5             Intent intent = null;
 6             switch (buttonView.getId()) {
 7             case R.id.tab_weather:
 8
 9                 intent = new Intent(MainActivityTab.this,
10                         WeatherActivityBaiDu.class);
11                 break;
12             case R.id.tab_produce:
13
14                 intent = new Intent(MainActivityTab.this,
15                         ProductWarningActivity.class);
16                 break;
17             case R.id.tab_im:
18                 intent = new Intent(MainActivityTab.this,
19                         ChatBriefActivity.class);
20                 break;
21
22             case R.id.tab_diaster:
23                 intent = new Intent(MainActivityTab.this,
24                         RelevantForecastActivity.class);
25                 break;
26             case R.id.tab_setting:
27                 intent = new Intent(MainActivityTab.this, SettingActivity.class);
28                 break;
29             case R.id.tab_more:
30
31                 break;
32
33             }
34
35             intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
36
37             Window subActivity = mlam.startActivity("startActivity", intent);
38             containerBordy.addView(subActivity.getDecorView());
39
40         }
41
42     }

上面的方法是将一个Activity加载到一个GroupActivity中。

要注意的是这的Activity是有一个startActivity的id,所以要将上述的onActivityResult方法变成:

 1 @Override
 2     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 3         super.onActivityResult(requestCode, resultCode, data);
 4         System.out.println("返回的是这里的onActivityResult");
 5         CommunicationActivity currentActivity = (CommunicationActivity) mlam
 6                 .getActivity("startActivity");
 7
 8 //        Activity a = mlam.getCurrentActivity()
 9         System.out.println("currentActivity-->>" + currentActivity);
10
11
12 //        System.out.println("requestCode-->>" + requestCode
13 //                + "    resultCode-->>" + resultCode + "  data"
14 //                + data.getIntExtra("blockID", 0));
15         currentActivity.onActivityResultFromMainActivity(requestCode,
16                 resultCode, data);
17 //        currentActivity.YSOS();
18     }
mlam对应的是LocalActivityManager.onActivityResultFromMainActivity这是子Activity中自己定义的方法。
时间: 2024-10-06 19:38:42

android onResultActivity不执行原因总结的相关文章

Android 在Android代码中执行命令行

1.路径最好不要是自己拼写的路径/mnt/shell/emulated/0/wifidog.conf 最好是通过方法获取的路径,不然可能导致命令无效  (挂载点的原因) public static final String SDCARD_ROOT=Environment.getExternalStorageDirectory().getAbsolutePath(); public static final String AAA_PATH=SDCARD_ROOT+"/wifidog.conf&qu

安卓执行机制JNI、Dalvik、ART之间的比較 。android L 改动执行机制。

Android L默认採用ART执行环境.全然兼容64位移动处理器.Google称这将比此前的Dalvik模式性能提高两倍,可是会占用很多其它的内存空间.Android有三种执行模式:JNI.Dalvik.ART.Dalvik明显是最慢的,全然的JNI模式是最快的可是开发难度高,ART介于两者之间.而且不影响现有开发模式,所以Google选了ART.我们的技术project师对此做了技术解读: 1)JNI:在开发过程中使用编译器在C/C++等语言直接编译成机器码.执行的时候可以充分利用系统性能,

Android 项目中执行java的main方法

Android 项目中执行java的main方法 导语 今日,在android项目中写了一个工具类,为了简单测试一下输出,就只直接在类中加上了main方法,于是问题来了: 解决方法是网上找到了,已经解决了,在此记录一下. 右击项目名,调出Properties窗口,打开Run/Debug Settings 标签,右边即列出了这个项目中含有main方法的所有java类,双击你要允许的java类:

android中延迟执行某个任务(基础备用)

android中延迟执行某个任务android App开发在某些情况下需要有延时功能,比如说App首页显示定格3秒,然后自动跳到登录页的情况,这就好比是一个预加载,但是这个预加载可能瞬间就完成了,撑不到3秒钟,这是就要求你做延时处理. 下面是三种方法: 一.线程    new Thread(new Runnable(){          public void run(){              Thread.sleep(XXXX);              handler.sendMe

Android 6.0 执行时权限处理全然解析

转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/50709663: 本文出自:[张鸿洋的博客] 一.概述 随着Android 6.0公布以及普及.我们开发人员所要应对的主要就是新版本号SDK带来的一些变化,首先关注的就是权限机制的变化.对于6.0的几个基本的变化,查看查看官网的这篇文章http://developer.android.com/intl/zh-cn/about/versions/marshmallow/andro

Android Studio 设置项目Module编码,解决Android Studio项目执行时乱码问题

Android Studio的项目设置逻辑与Eclipse有非常大的差别.运行的操作为File->Setting->File Encodings然后来进行设置,如图所看到的: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="600" height="40

[android] 采用服务执行长期后台的操作

服务:在后台长期运行的没有界面的组件 新建一个类PhoneService类,继承系统的Service类 清单文件中 进行配置 新建一个节点<service>,设置名称android:name=”.PhoneService” 类里面有几个重要方法 onCreate()方法,服务被创建的时候调用 onDestory()方法,服务被销毁的时候调用 开启服务 获取intent对象,new Intent(this,PhoneService.class),参数:上下文,字节码 调用上下文对象的startS

Android React Native在Android Studio中执行bundleReleaseJsAndAssets 打包失败的解决方法

这个坑在文章记一次在Windows上搭建React Native Android环境踩过的坑中我已经提到过,当时找不到解决方法,只能开一个命令提示符终端独立执行打包.就像这样子 react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output C:\Users\Administrator\Desktop\AwesomeProject\android\app\build\

crond不执行原因分析

自己写了个脚本,让crond来周期性执行脚本进行备份,但是在crontab -e里面加入了执行脚本之后,发现没有执行,后来分析了一下,crond不执行的原因主要有以下几个方面: 1.crond服务没启动 service crond start           //启动服务service crond stop           //关闭服务service crond restart       //重启服务service crond reload       //重新载入配置 2.用户没有执