首页 > 解决方案 > 在 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());
      }
    }
  }

标签: android

解决方案


首先,onActivityResult()没有它本身是没有意义的startActivityForResult()。现在,由于自动完成是在另一个活动中处理的(因此是startActivityForResult()),因此您需要拥有onActivityResult()才能读取所述活动的结果(在本例中为自动完成值)。

我不判断,但请先了解基本情况。


推荐阅读