onActivityResult方法不被称为 [英] onActivityResult method is not being called

查看:245
本文介绍了onActivityResult方法不被称为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有我的android应用程序的问题。我不知道为什么'onActivityResult'方法是不会被调用的操作栏时,上升的导航按钮是pressed。我想我所做的一切都是正确的:

  • 父活动启动子活性startActivityForResult的方法。

     意向意图=新的意图(ParentActivity.this,ChildActivity.class);
    startActivityForResult(意向,1000);
     

  • 父活动已覆盖'onActivityResult的方法。

     保护无效onActivityResult(INT申请code,INT结果code,意图数据)
    {
       super.onActivityResult(要求code,因此code,数据);
       如果(数据= NULL和放大器;!&安培;请求code == 1000)
       {
            捆绑额外= data.getExtras();
            布尔RC = extras.getBoolean(MyConstants.INTENT_EXTRA_RESULT);
            如果(RC)
            {
                .......
            }
        }
    }
     

  • 在儿童活动已覆盖onOptionsItemSelected,并呼吁NavUtils.navigateUpFromSameTask。

     公共布尔onOptionsItemSelected(菜单项项)
      {
        如果(item.getItemId()== android.R.id.home)
        {
            意向书结果=新的意图((字符串)NULL);
            result.putExtra(MyConstants.INTENT_EXTRA_RESULT,真正的);
            的setResult(RESULT_OK,结果);
            NavUtils.navigateUpFromSameTask(本);
            返回true;
        }
        其他
        {
            返回super.onOptionsItemSelected(项目);
        }
    }
     

  • 在儿童活动已重写'完成'的方法。此方法设置的结果。

     公共无效结束()
    {
       意向书结果=新的意图((字符串)NULL);
       result.putExtra(Constantes.INTENT_EXTRA_HAY_QUE_RECALCULAR,hayQueRecalcular);
       的setResult(RESULT_OK,结果);
    
       super.finish();
    }
     

    我不知道为什么'onActivityResult方法不会被调用。

    我观察到的是,孩子的活动是不是被完成('完成'的方法不会被调用)的操作栏时,'向上导航按钮pssed $ P $。然而,它被调用的时候后退按钮(硬件按钮)是pressed。

    我在做什么错了?

    感谢

    解决方案

    随着孩子的活动只是在你的父活动的顶部,不需要这种方法

      NavUtils.navigateUpFromSameTask(本);
     

    这样写

     公共布尔onOptionsItemSelected(菜单项项){
        如果(item.getItemId()== android.R.id.home){
            意向书结果=新的意图((字符串)NULL);
            result.putExtra(MyConstants.INTENT_EXTRA_RESULT,真正的);
            的setResult(RESULT_OK,结果);
            完();
            返回true;
        } 其他 {
            返回super.onOptionsItemSelected(项目);
        }
    }
     

    完成你的孩子的活动时,home键是pressed。

    I'm having a problem in my android application. I don't know why 'onActivityResult' method is not being called when 'Up navigation' button from action bar is pressed. I think I've done everything properly:

  • Parent activity launch child activity with 'startActivityForResult' method.

    Intent intent = new Intent(ParentActivity.this, ChildActivity.class);
    startActivityForResult(intent, 1000);
    

  • Parent activity has overridden 'onActivityResult' method.

    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
       super.onActivityResult(requestCode, resultCode, data);   
       if (data != null && requestCode == 1000)
       {
            Bundle extras = data.getExtras();
            Boolean rc = extras.getBoolean(MyConstants.INTENT_EXTRA_RESULT);
            if (rc)
            {
                .......
            }
        }
    }
    

  • Child activity has overridden 'onOptionsItemSelected' and calls 'NavUtils.navigateUpFromSameTask'.

    public boolean onOptionsItemSelected(MenuItem item)
      {
        if (item.getItemId() == android.R.id.home)
        {
            Intent result = new Intent((String)null);
            result.putExtra(MyConstants.INTENT_EXTRA_RESULT, true);
            setResult(RESULT_OK, result);
            NavUtils.navigateUpFromSameTask(this);          
            return true;
        }           
        else
        {
            return super.onOptionsItemSelected(item);
        }
    }
    

  • Child activity has overriden 'finish' method. This method set a result.

    public void finish() 
    {
       Intent result = new Intent((String)null);
       result.putExtra(Constantes.INTENT_EXTRA_HAY_QUE_RECALCULAR, hayQueRecalcular);               
       setResult(RESULT_OK, result);
    
       super.finish();
    }   
    

    I'm not sure why 'onActivityResult' method is not being called.

    What I've observed is that child activity is not being finished ('finish' method is not being called) when 'Up navigation' button from action bar is pressed. However it is called when back button (hardware button) is pressed.

    What I'm doing wrong?

    Thanks

    解决方案

    As your child Activity is just on the top of your Parent Activity, no need of this method

     NavUtils.navigateUpFromSameTask(this);    
    

    write like

    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            Intent result = new Intent((String) null);
            result.putExtra(MyConstants.INTENT_EXTRA_RESULT, true);
            setResult(RESULT_OK, result);
            finish();
            return true;
        } else {
            return super.onOptionsItemSelected(item);
        }
    }
    

    finish your Child Activity when home button is pressed.

    这篇关于onActivityResult方法不被称为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆