我正在编写一个组件,允许用户根据位置选取器指示的位置选择一个位置。其中一个需求是将LatLng对象从映射活动发送回调用前者的活动。问题是,尽管将其显式设置为RESULT_OK
,但返回的结果代码始终为RESULT_CANCELLED
。下面是代码:调用活动:
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();
,但不起作用;返回的包为空。
发布于 2020-01-01 13:55:23
当您活动使用singleTask启动模式时,就会发生这种情况。因此,我建议,如果您的清单活动选项卡中有以下行,请删除它。
android:launchMode="singleInstance"
https://stackoverflow.com/questions/59545600
复制相似问题