gpt4 book ai didi

Android Place 自动完成 fragment : Unable to set text

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:32 26 4
gpt4 key购买 nike

Google 最近更新了他们的 Places SDK for android,所以现在我也在更新我的代码。我正在尝试使用 AutocompleteSupportFragment 来允许用户设置他们的地址。

这是我的代码:

mAddressEditText = (AutocompleteSupportFragment) getSupportFragmentManager().findFragmentById(R.id.address);
mAddressEditText.setPlaceFields(Arrays.asList(Place.Field.ADDRESS, Place.Field.LAT_LNG));
mAddressEditText.setHint("Address");
mAddressEditText.setText("Test1"); // Works fine at the beginning, disappears after selecting a place and shows only the hint
mAddressEditText.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place) {
Log.d(TAG, "Place Selected");
// Other Stuff
mAddressEditText.setText("Test2"); // Doesn't Work, all I can see is the hint
mAddressEditText.setText(place.getAddress()); // Doesn't Work, all I can see is the hint
}

@Override
public void onError(Status status) {
Log.e(TAG, "An error occurred: " + status);
invalidAddressDialog.show();
}
});

在以前的 SDK 中, fragment 会自动将文本设置为所选地址。这在新的 SDK 中不起作用(不确定是否有意)。所以我试图手动设置它。正如您在我的代码的注释中看到的那样,使用 setText 在监听器之外工作正常。在听众内部他们没有。

我做错了什么还是这是一个错误?

编辑:这么久了,我仍然无法正确解决这个问题。明确地说,我可以从 fragment 中正确获取地址,唯一不起作用的是 setText

但是,由于一些答案表明他们没有遇到同样的问题,我开始认为这可能与我使用的库版本有关?

这些是我在 build.gradle 中的库:

api 'com.android.support:appcompat-v7:28.0.0'
api 'com.android.support:support-annotations:28.0.0'

api 'com.android.support:multidex:1.0.3'

api 'com.google.firebase:firebase-core:16.0.8'
api 'com.google.firebase:firebase-auth:16.2.1'
api 'com.google.firebase:firebase-firestore:18.2.0'
api 'com.google.firebase:firebase-storage:16.1.0'
api 'com.google.android.libraries.places:places:1.1.0'

最佳答案

setText 一直给我同样的问题 - 我认为它一定是一个错误。但是我发现了一些关于提示的解决方法。在您的 onPlaceSelected 中,您可以放置​​以下内容:

Java

EditText etPlace = (EditText) autocompleteFragment.getView().findViewById(R.id.places_autocomplete_search_input);
etPlace.setHint(place.getAddress())

Kotlin

val etPlace = autocompleteFragment.view?.findViewById(R.id.places_autocomplete_search_input) as EditText
etPlace.hint = place.address

关于Android Place 自动完成 fragment : Unable to set text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54499335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com