android - 在 onActivityResult 中调用方法而不是活动
问题描述
我正在尝试Places.autocomplete
使用此开发人员指南和帮助来实现。它工作正常,但像往常一样,它正在调用 MainActivity。因此,它lastknowonlocation
已经在MainActivity
. 我同意,这是一个糟糕的设计,但却是我对 java 零经验的产物。
现在,我的问题是,是否可以调用方法而不是onActivityResult
, 即setupViewPager
?
public void onSearchCalled() {
// Set the fields to specify which types of place data to return.
List<Place.Field> fields = Arrays.asList(Place.Field.ID, Place.Field.NAME, Place.Field.ADDRESS, Place.Field.LAT_LNG);
// Start the autocomplete intent.
Intent intent = new Autocomplete.IntentBuilder(
AutocompleteActivityMode.OVERLAY, fields) //no .setCountry...Search whole world
.build(this);
startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
Place place = Autocomplete.getPlaceFromIntent(data);
// Log.i("LocationSearch", "Place: " + place.getName() + ", " + place.getId() + ", " + place.getAddress());
Toast.makeText(MainActivity.this, "ID: " + place.getId() + "address:" + place.getAddress() + "Name:" + place.getName() + " latlong: " + place.getLatLng(), Toast.LENGTH_LONG).show();
// String address = place.getAddress();
if (place.getLatLng() !=null) {
Lat = place.getLatLng().latitude;
Long = place.getLatLng().longitude;
// setupViewPager();
} else {
Toast.makeText(this, getString(R.string.location_not_found), Toast.LENGTH_LONG).show();
}
} else if (resultCode == AutocompleteActivity.RESULT_ERROR) {
// TODO: Handle the error.
Status status = Autocomplete.getStatusFromIntent(data);
Toast.makeText(MainActivity.this, "Error: " + status.getStatusMessage(), Toast.LENGTH_LONG).show();
// Log.i("LocationSearch", status.getStatusMessage());
}
}
}
解决方案
首先,onActivityResult()
没有它本身是没有意义的startActivityForResult()
。现在,由于自动完成是在另一个活动中处理的(因此是startActivityForResult()
),因此您需要拥有onActivityResult()
才能读取所述活动的结果(在本例中为自动完成值)。
我不判断,但请先了解基本情况。
推荐阅读
- javascript - 相机改变位置时如何改变球体的z轴
- c# - asp.net c#中的日期和时间比较问题
- javascript - 如果更新了 javascript 文件,则 IIS/Javascript SPA 重新加载页面
- amazon-web-services - 由于缺少数据,AWS Forecast 无法训练预测器
- firebase - Flutter&Firebase:用户(Android用户)在上传过程中取消上传问题时出错
- java - 找不到 SpringJUnit4ClassRunner 和 @ContextConfiguration
- python - Python Telebot 不能与不同的用户一起工作
- java - 使用访问者模式避免使用 Protobuf 生成的枚举的 if-else
- c++ - 无法在 OpenCV 中应用 tensorflow 模型
- javascript - sinon 存根一个空属性