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.
}
});
Run Code Online (Sandbox Code Playgroud)

Min*_*mir 29
如果我理解你getFragmentManager(),现在已弃用
我们将使用getChildFragmentManager()
返回一个私有的 FragmentManager 来放置和管理这个 Fragment 中的 Fragment。
我们将使用getParentFragmentManager()
返回 FragmentManager 与与此片段活动相关联的片段进行交互。
因此,如果您处理片段中的片段,您将使用第一个;如果您处理活动中的片段,您将使用第二个。
你可以在这里找到它们 package androidx.fragment.app;
tet*_*Arg 14
如果您使用 AndroidX 片段androidx.fragment.app.Fragment,则可以使用
getActivity().getSupportFragmentManager()
Run Code Online (Sandbox Code Playgroud)
小智 13
API级别28不推荐使用此方法。
使用 FragmentActivity.getSupportFragmentManager()
小智 10
我用parentFragmentManager而不是fragmentManager. (如果您使用的是androidx Fragment。)
https://developer.android.com/jetpack/androidx/releases/fragment#1.2.0
getFragmentManager()折旧:在
getFragmentManager()和requireFragmentManager()方法上Fragment已被弃用,并用单一的替代getParentFragmentManager()方法,该方法返回非空FragmentManager的Fragment加入到(你可以使用isAdded(),以确定它是否是安全的调用)。
您应该使用Android支持库中的Fragment类.
android.app.Fragment在API级别28中已弃用.使用支持库片段可在所有设备上实现一致的行为并访问Lifecycle.
请改用android.support.v4.app.Fragment.
由于这个问题有点宽泛,这里是那些已迁移到androidX.
确保您的片段在import部分中使用 androidX 版本。即如果您正在使用DialogFragment(),请更换
import android.app.DialogFragment
Run Code Online (Sandbox Code Playgroud)
和
import androidx.fragment.app.DialogFragment
Run Code Online (Sandbox Code Playgroud)
然后fragmentManager在show()打开对话框时,如果从另一个启动fragment不要改变它,但如果从一个传递Activity,首先从 扩展活动FragmentActivity(),然后传递supportFragmentManager:
// kotlin
import androidx.fragment.app.FragmentActivity
class MyActivity: FragmentActivity() {
...
val myDialog = MyDialog()
myDialog.show(supportFragmentManager, TAG)
...
}
Run Code Online (Sandbox Code Playgroud)
虽然,同样的步骤也适用于support.v4如果您还没有迁移到androidX。只是在第一步替换
import android.app.DialogFragment
Run Code Online (Sandbox Code Playgroud)
和
import android.support.v4.app.Fragment
Run Code Online (Sandbox Code Playgroud)
现在,在 Kotlin 中我使用
val fragmentManager = this@className.parentFragmentManager
Run Code Online (Sandbox Code Playgroud)
好吧,如果您仍然使用 Java,我认为代码是
FragmentManager manager = this.getParentFragmentManager();
Run Code Online (Sandbox Code Playgroud)
希望我的回答可以解决这个任务。
我建议你现在使用导航
对于科特林:
activity
?.supportFragmentManager
?. <whatever needs to come after that>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14738 次 |
| 最近记录: |