Ответ 1
Этот метод устарел на уровне API 28.
Используйте FragmentActivity.getSupportFragmentManager()
FragmentManager
устарела. Есть ли альтернатива или что я могу сделать сейчас?
PlaceAutocompleteFragment autocompleteFragment = (PlaceAutocompleteFragment) getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);
autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place) {
// TODO: Get info about the selected place.
destination = place.getName().toString();
destinationLatLng = place.getLatLng();
}
@Override
public void onError(Status status) {
// TODO: Handle the error.
}
});
Этот метод устарел на уровне API 28.
Используйте FragmentActivity.getSupportFragmentManager()
Вместо этого вам следует использовать класс Fragment из библиотеки поддержки Android.
android.app.Fragment устарел на уровне API 28. Используйте фрагмент библиотеки поддержки для согласованного поведения на всех устройствах и доступа к жизненному циклу.
Вместо этого используйте android.support.v4.app.Fragment.
Использование библиотеки поддержки позволяет преодолеть эту проблему.
Согласно документации Класс фрагмента устарел:
Этот класс устарел в API уровня 28. Используйте фрагмент библиотеки поддержки для обеспечения согласованного поведения на всех устройствах и доступа к жизненному циклу.
Поскольку вопрос немного широк, здесь решение для тех, кто перешел на androidX
.
Убедитесь, что ваши фрагменты используют версии androidX в разделе import
. т.е. если вы используете DialogFragment()
, замените
import android.app.DialogFragment
с
import androidx.fragment.app.DialogFragment
Затем для fragmentManager
при открытии show()
диалогового окна, если запуск из другого fragment
не изменяет его, но если он передается из Activity
, сначала расширьте действие из FragmentActivity()
, затем передайте supportFragmentManager
:
// kotlin
import androidx.fragment.app.FragmentActivity
class MyActivity: FragmentActivity() {
...
val myDialog = MyDialog()
myDialog.show(supportFragmentManager, TAG)
...
}
Althogh те же шаги применимы и к support.v4
, если вы не мигрировали в androidX
. Просто на первом этапе замените
import android.app.DialogFragment
с
import android.support.v4.app.Fragment
Xml
<fragment
android:id="@+id/place_autocomplete_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:name="com.google.android.gms.location.places.ui.SupportPlaceAutocompleteFragment"
/>
активность
SupportPlaceAutocompleteFragment autocompleteFragment = (SupportPlaceAutocompleteFragment)
getSupportFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);
Если я вас хорошо понял, TG40 теперь устарела
мы будем использовать getChildFragmentManager()
Верните частный FragmentManager для размещения и управления фрагментами внутри этого фрагмента.
мы будем использовать getParentFragmentManager()
Верните FragmentManager для взаимодействия с фрагментами, связанными с этим действием фрагмента.
поэтому, если вы имеете дело с фрагментами внутри фрагмента, вы будете использовать первый, а если вы имеете дело с фрагментами внутри действия, вы будете использовать второй.
Вы можете найти их здесь package androidx.fragment.app;