gpt4 book ai didi

android - 为什么 Fragment 在 .hide() 和 .setCustomAnimations() 上崩溃?

转载 作者:行者123 更新时间:2023-11-29 23:44:59 26 4
gpt4 key购买 nike

xml:

    <RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">



<fragment
android:id="@+id/the_fragment"
android:name="com.example.MyFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
tools:layout="@layout/fragment_my"/>

<Button
android:id = "@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Show/Hide"/>

</RelativeLayout>

代码:

    @Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mMyFragment = (MyFragment) getChildFragmentManager()
.findFragmentById(R.id.the_fragment);
((Button)view.findViewById(R.id.button)).setOnClickListener(view->{
if (...){
//hide
getChildFragmentManager().beginTransaction()
.setCustomAnimations(R.animator.slide_in_from_bottom, R.animator.slide_out_to_bottom)
.hide(mMyFragment)
.commit();

}else{
//show
getChildFragmentManager().beginTransaction()
.setCustomAnimations(R.animator.slide_in_from_bottom, R.animator.slide_out_to_bottom)//in this line the app crash
.show(mMyFragment)
.commit();
}
});

}

出现错误:

Process: by.gramophone.develop, PID: 21508
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.ViewGroup.startViewTransition(android.view.View)' on a null object reference
at android.support.v4.app.FragmentManagerImpl.completeShowHideFragment(FragmentManager.java:1700)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1797)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:792)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2596)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2383)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2338)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2245)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:703)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

更新:但是如果我删除 .setCustomAnimations(R.animator.slide_in_from_bottom, R.animator.slide_out_to_bottom) 错误不会发生

最佳答案

正如 developer.android.com 上所说“当您通过在布局 XML 文件中定义 fragment 来将 fragment 添加到 Activity 布局时,您无法在运行时删除该 fragment 。如果您打算交换 fragment 和out 在用户交互期间,您必须在 Activity 首次启动时将 fragment 添加到 Activity 中……”link

尝试动态添加 fragment 。 how to

关于android - 为什么 Fragment 在 .hide() 和 .setCustomAnimations() 上崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51513173/

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