【问题标题】:Activity always returns RESULT_CANCELLED despite manually setting the result as RESULT_OK尽管手动将结果设置为 RESULT_OK,活动始终返回 RESULT_CANCELLED
【发布时间】:2019-12-31 14:54:54
【问题描述】:

我正在编写一个组件,允许用户根据位置选择器指示的位置来选择位置。要求之一是将 LatLng 对象从地图活动发送回调用前者的活动。问题是返回的结果代码总是RESULT_CANCELLED,尽管它明确地设置为RESULT_OK。这是代码: 通话活动:

 public void getLocationBtn(View view) {
        Intent i = new Intent(this, PickLocationActivity.class);
        startActivityForResult(i, 1);
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 1) {
            if (resultCode == Activity.RESULT_OK) {
                location = data.getParcelableExtra("location");
                Log.d(TAG, "gotLocation: " + location);
            }
            if (resultCode == Activity.RESULT_CANCELED) {
                Toast.makeText(getApplicationContext(), "Location not chosen", Toast.LENGTH_SHORT).show();
            }
        }
    }

被调用的活动:

btnFind.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                centerLatLang = mMap.getProjection().getVisibleRegion().latLngBounds.getCenter();
                Button doneBtn = findViewById(R.id.locationPickerDoneBtn);
                doneBtn.setEnabled(true);
            }
        });
    }

    public void doneBtn(View view) {
        Intent returnIntent = new Intent();
        returnIntent.putExtra("location", centerLatLang);
        setResult(Activity.RESULT_OK, returnIntent);
        finish();
    }

btnFind 获取坐标,doneBtn 确认用户的选择并返回之前的活动。 我已经尝试用getIntent() 替换Intent returnIntent = new Intent();,但是没有用;返回的包为空。

【问题讨论】:

  • 我试过你的代码,它工作正常,if (resultCode == Activity.RESULT_OK) 中的代码被正常调用,也请记住,startActivityForResult() 仅适用于打算被调用的活动那样。如果您调用的活动没有显式返回结果,您将获得默认结果 RESULT_CANCELED,因为提到的是 answer

标签: android google-maps android-activity


【解决方案1】:

当您的 Activity 使用 singleTask 启动模式时会发生这种情况。所以我建议如果您的清单活动选项卡中有以下行,请将其删除。

android:launchMode="singleInstance"

【讨论】:

    猜你喜欢
    • 2021-03-06
    • 2013-02-18
    • 2013-02-18
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多