【问题标题】:setResult not returning expected result, when using with startActivityForResult与 startActivityForResult 一起使用时,setResult 未返回预期结果
【发布时间】:2018-12-15 02:45:57
【问题描述】:

调用活动代码:

Intent intent = new Intent(MainActivity.this, BuyActivity.class);
startActivityForResult(intent, BuyActivity.BUY_REQUEST_CODE);

调用活动结果处理程序:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.d("billing","Got response from buy activity. resultCode = " + requestCode);
        if(requestCode== BUY_REUEST_CODE){
            boolean buyStatus= data.getBooleanExtra(BuyActivity.BUY_STATUS, false);
            if(buyStatus){
                Log.d(Constants.APP_TAG,"purchase was successful");
                enablePaidFeaturesIfRequired();
            }
            removeAdsIfRequired();
        }
    }

调用的活动代码:

Intent data = new Intent();
data.putExtra(BUY_STATUS, false);
Log.d(APP_TAG,"Setting buy activity result to " + RESULT_OK);
BuyActivity.this.setResult(RESULT_OK, data);
finish();

在处理程序中没有得到 RESULT_OK,即使我在日志中看到以下内容

 "Setting buy activity result to -1 ";

我得到的结果是 1,即 RESULT_FIRST_USER,

【问题讨论】:

  • 您查看的参数有误:requestCode== RESULT_OK。你的requestCodeBuyActivity.BUY_REQUEST_CODE。你想检查resultCode 是否有RESULT_OK
  • 我改变了这一点,不管怎样,第一行的日志语句显示返回结果 1 而不是 -1。 "得到购买活动的响应。resultCode = 1"
  • 您是否也更改了日志打印?您的代码显示您正在打印requestCode,而不是resultCode
  • 啊,这就是问题所在。对于那个很抱歉。现在修好了。

标签: android startactivityforresult


【解决方案1】:

尝试将if(requestCode== RESULT_OK){改为if(resultCode == RESULT_OK){

在日志中,有一个错字resultCode = " + requestCoderesultCoderequestCode 是不同的。

【讨论】:

  • 修复了,不管怎样,第一行的日志语句显示返回结果 1 而不是 -1。 "得到购买活动的响应。resultCode = 1"
  • 日志语句也有错别字。我已经更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 2011-08-09
  • 2010-09-22
  • 2021-05-17
  • 2018-02-19
  • 2018-03-23
  • 2020-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多