onActivityResult方法不执行,啥原因?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了onActivityResult方法不执行,啥原因?相关的知识,希望对你有一定的参考价值。

这两个跳转的Activity,我都继承了自己写的Activity类,我自己写的BaseActivity类继承了Activity类,在我自己的覆盖的方法里,都已经super了父类的方法了。这是不是造成了onActivityResult方法在返回后不执行的原因?

参考技术A onActivityResult方法不执行,原因是AActivity在androidManifest.xml 中设置的launchmode="SingleTask";后修改为 android:launchMode="standard"即可!
AActivity
//调用联系人
public void getContact()
Intent intent = new Intent();
intent.putExtra("send", "GETCONTACT");
intent.setClass(SendCoinsActivity.this,ContactPerson.class);
startActivityForResult(intent, GETCONTACT);

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent)
if(resultCode==GETCONTACT)
String str = intent.getExtras().getString("address");
updateSendCoinsFragment(str,null);
else
super.onActivityResult(requestCode, resultCode, intent);


android:label="@string/app_name"
BActivity
Intent data=new Intent();
data.putExtra("address", address);
setResult(SendCoinsActivity.GETCONTACT, data);
finish();
参考技术B 哦。。。那就是说 其实执行了 onActivityResult 方法,只不过 没有进你里面的判断条件。。。遇这情况 在方法的最开始 先打印东西,容易找到 问题 关键。呵呵 参考技术C 帖子不错,留个脚印 参考技术D 不会吧? 返回的时候使用setresult()了? 第5个回答  2013-07-09 需要返回的activity 是不是 放在了activitygroup里了呢?

Android 在Fragment中执行onActivityResult不被调用的简单解决方法

在Android开发中,我们经常会用到FragmentActivity下嵌套多个Fragment,但是在开发过程中会发现在嵌套的Fragment中使用onActivityResult回调方法没有被执行。

网上也有很多解决方法,但是说的都比较麻烦,所以今天给大家推荐一种超简单的用法,

在Fragment和FragmentActivity中都要重写onActivityResult方法,并且要保证两者的请求码或者结果码一致。代码如下:

在FragmentActivity中

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch(resultCode){
            case 1://该结果码要与Fragment中的一致
              //我这里使用的是根据结果码获取数据,然后加上下面一句代码,其
              //他的什么都不用做
               super.onActivityResult(requestCode,resultCode,data);
                break;
           case 2:
                super.onActivityResult(requestCode,resultCode,data);
                break;
             ......
        }
    }

在Fragment中

   @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (resultCode){
            case 1://该结果码与FragmentActivity中是保持一致的
                //在这里获取你需要的数据
                break;
            case 2:
              
                break;
  
        }
    }

综上所述要解决在Fragment中使用onActivityResult不被调用的问题,只需要做到在Fragment和FragmentActivity中同时重写onActivityResult方法,并且要保证所使用的请求码或者结果码一致就行了。

是不是很简单,有需要的朋友可以参考一下。

以上是关于onActivityResult方法不执行,啥原因?的主要内容,如果未能解决你的问题,请参考以下文章

onactivityresult啥时候执行

当在Fragment中使用startActivityForResult()方法打开一个Activity,但是这个Fragment的onActivityResult方法不执行

Android踩坑随笔Fragment中onActivityResult方法不被调用

片段 onActivityResult 方法执行调用活动 onActivityResult

Android 在Fragment中执行onActivityResult不被调用的简单解决方法

快速有效解决Fragment中onActivityResult不回调的问题