Pro*_*oWi 2 android google-maps google-places-api
我正在Android应用中使用Google PlacePicker.我可以用它来选择地址.但是,一旦选择了地址,它就不会返回到调用者活动.相反,我必须按下后退按钮!
这是我初始化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;
}
});
Run Code Online (Sandbox Code Playgroud)
这就是我倾听结果的方式:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是:Google PlacePicker finished除非我按下地方选择器上的后退按钮,否则我不会收到日志消息" " 之后一切都正常进行,我想要发生的动作很好(意味着地址已被正确选取)
有一个类似的问题在这里和评论表明,呼叫者活动可能会android:noHistory="true"在清单中.但我查了一下,事实并非如此.这是我的清单中的相应片段:
<activity
android:name=".AddressPickerActivity"
android:theme="@style/AppThemeNoActionBar" />
Run Code Online (Sandbox Code Playgroud)
是什么导致这个?
我也试过明确添加android:noHistory="false"到清单.没变.
您可以使用OnClickListener或尝试MotionEvent.ACTION_UP为startActivityForResult 添加if条件,因为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;
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |