Android PlacePicker не возвращает выбранный адрес - PullRequest
0 голосов
/ 03 июля 2018

Я использую Google PlacePicker в своем приложении для Android. Я могу использовать его для выбора адресов. Тем не менее, он не возвращается к активности вызывающего абонента после выбора адреса. Вместо этого я должен нажать кнопку "Назад"!

Вот как я инициализирую свой PlacePicker:

/**
 * Add New Address
 */
mNewButton.setOnTouchListener(new View.OnTouchListener()
{
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent)
    {
        PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
        try
        {
            startActivityForResult(builder.build(AddressPickerActivity.this), ADDRESS_CODE);
        }
        catch (GooglePlayServicesRepairableException | GooglePlayServicesNotAvailableException e)
        {
            int status = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(AddressPickerActivity.this);
            GoogleApiAvailability.getInstance().getErrorDialog(AddressPickerActivity.this, status, 100).show();
        }
        return false;
    }
});

и вот как я слушаю результат:

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if (requestCode == ADDRESS_CODE)
    {
        if (resultCode == RESULT_OK)
        {
            Log.d(TAG, "Google PlacePicker finished");
            // Do Stuff then finish current activity too
            AddressPickerActivity.this.setResult(RESULT_OK);
            AddressPickerActivity.this.finish();
        }
    }
}

Проблема в том, что я не получаю сообщение журнала "Google PlacePicker finished", пока не нажму кнопку "Назад" на средстве выбора мест! После этого все идет как обычно, и действия, которые я хочу выполнить, работают нормально (то есть адрес был выбран правильно)

Здесь есть похожий вопрос здесь , и в комментариях предполагается, что активность вызывающего может иметь android:noHistory="true" в манифесте. Но я проверил, и это не так. Вот соответствующий фрагмент из моего манифеста:

<activity
    android:name=".AddressPickerActivity"
    android:theme="@style/AppThemeNoActionBar" />

Что может быть причиной этого?

EDIT1:

Я также попытался явно добавить android:noHistory="false" в манифест. Без изменений.

1 Ответ

0 голосов
/ 03 июля 2018

Вы можете использовать OnClickListener или попытаться добавить, если условие MotionEvent.ACTION_UP для startActivityForResult, потому что случается так, что PlacePicker открывается дважды.

mNewButton.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        if(motionEvent.getAction() == MotionEvent.ACTION_UP){
            PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
            try {
                startActivityForResult(builder.build(AddressPickerActivity.this), ADDRESS_CODE);
            } catch (GooglePlayServicesRepairableException | GooglePlayServicesNotAvailableException e) {
                int status = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(AddressPickerActivity.this);
                GoogleApiAvailability.getInstance().getErrorDialog(AddressPickerActivity.this, status, 100).show();
            }
        }
        return false;
    }
});
...