【问题标题】:how do I get my intent to work with Google Place Autocomplete?如何获得使用 Google Place Autocomplete 的意图?
【发布时间】:2019-12-20 00:01:37
【问题描述】:

你能告诉我我需要做什么才能让我的意图发挥作用吗?当用户单击mEditInit 时,会出现 Places 下拉菜单。

当用户点击菜单中的地方时,我想把这个发回mEditInit

我以前使用过意图,但在这种情况下不起作用。

public class MyActivity extends AppCompatActivity  {

  String stuff;

  private EditText mEditInit;

  public static final int AUTOCOMPLETE_REQUEST_CODE = 1;


  @Override
  protected void onCreate (Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_my);

    mEditInit = (EditText) findViewById(R.id.edit_message);

    mEditInit.setX(0);
    mEditInit.setY(250);

    //Get the bundle
    Bundle bundle = getIntent().getExtras();


    if (stuff != null && !stuff.isEmpty())
    //Extract the data…
    { stuff = bundle.getString("stuff");
      mEditInit.setText(stuff);
    }

    Places.initialize(this, getString(R.string.places_api_key));

    mEditInit.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        Toast.makeText(MyActivity.this, "bowwow", Toast.LENGTH_SHORT).show();

        List<Place.Field> fields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
// Start the autocomplete intent.
        Intent intent = new Autocomplete.IntentBuilder(AutocompleteActivityMode.OVERLAY, fields).build(MyActivity.this);
        startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE);
        //setResult(RESULT_OK, intent);

      }
    });

  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
      if (resultCode == RESULT_OK) {

        Place place = Autocomplete.getPlaceFromIntent(data);
        //Toast.makeText(MyActivity.this, place.getName(), Toast.LENGTH_SHORT).show();

        Toast.makeText(MyActivity.this, place.getName(), Toast.LENGTH_SHORT).show();

        Intent i = new Intent(this, MyActivity.class);

        String getrec= place.getName();

        //Create the bundle
        Bundle bundle = new Bundle();

        //Add your data to bundle
        bundle.putString("stuff", getrec);

        //Add the bundle to the intent
        i.putExtras(bundle);

        // Log.i(TAG, "Place: " + place.getName() + ", " + place.getId());
      } else if (resultCode == AutocompleteActivity.RESULT_ERROR) {
        // TODO: Handle the error.
        Status status = Autocomplete.getStatusFromIntent(data);
        // Log.i(TAG, status.getStatusMessage());
      } else if (resultCode == RESULT_CANCELED) {
        // The user canceled the operation.
      }
      //  super.onActivityResult(requestCode, resultCode, data);
    }
  }

}

【问题讨论】:

  • 你的问题到底是什么?你进入你的onActivityResult 方法了吗?
  • 是的,我进入 onActivityResult。 Toast.makeText(MyActivity.this, place.getName(), Toast.LENGTH_SHORT).show(); 在我单击菜单中的项目时起作用,并且菜单按预期消失。但我想将place.getName() 发送到mEditInit

标签: java android googleplacesautocomplete


【解决方案1】:

在您的 onActivityResult 方法中,您不需要任何额外的。

只需在您的EditText 上调用setText() 方法即可:

@Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
      if (resultCode == RESULT_OK) {

        Place place = Autocomplete.getPlaceFromIntent(data);
        //Toast.makeText(MyActivity.this, place.getName(), Toast.LENGTH_SHORT).show();

        mEditInit.setText(place.getName());
      } else if (resultCode == AutocompleteActivity.RESULT_ERROR) {
        // TODO: Handle the error.
        Status status = Autocomplete.getStatusFromIntent(data);
        // Log.i(TAG, status.getStatusMessage());
      } else if (resultCode == RESULT_CANCELED) {
        // The user canceled the operation.
      }
      //  super.onActivityResult(requestCode, resultCode, data);
    }
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-19
    • 2016-11-29
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 2017-07-25
    • 2014-01-14
    • 2019-03-15
    相关资源
    最近更新 更多