zoukankan      html  css  js  c++  java
  • 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中自己定义的方法。
  • 相关阅读:
    mac下创建nativescript angular项目
    图解原型及原型链
    类型转换规则
    无符号右移操作符 this.length >>> 0
    认识 void 运算符
    Spark ML机器学习库评估指标示例
    CentOS7 Cloudera Manager6 完全离线安装 CDH6 集群
    Ambari HDP 下 SPARK2 与 Phoenix 整合
    IDEA设置
    Tricky Sum
  • 原文地址:https://www.cnblogs.com/liangstudyhome/p/4207099.html
Copyright © 2011-2022 走看看