【发布时间】:2020-04-05 19:34:01
【问题描述】:
我正在尝试以编程方式启动片段。下面的功能可以自己正常工作。这里的问题是,我必须从另一个片段中调用该函数。从片段到 MainActivity 的调用有效,不是问题。
public void gotoFragment1(){
Fragment1 fragment = new Fragment1();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.nav_host_fragment, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
如果我尝试从另一个片段调用该函数,应用程序将崩溃并显示以下堆栈跟踪:
java.lang.IllegalStateException: FragmentManager has not been attached to a host.
at androidx.fragment.app.FragmentManager.enqueueAction(FragmentManager.java:1727)
at androidx.fragment.app.BackStackRecord.commitInternal(BackStackRecord.java:321)
at androidx.fragment.app.BackStackRecord.commit(BackStackRecord.java:286)
at com.fewo.info.MainActivity.gotoVeranstaltungen(MainActivity.java:134)
at com.fewo.info.ui.home.HomeFragment$1.onClick(HomeFragment.java:53)
如何通过从另一个片段中调用此代码来更改片段?
【问题讨论】:
-
你什么时候调用这个代码?您是否尝试过使用
childFragmentManager而不是supportFragmentManager -
fragment A 通过 ActivityOne 调用 Fragment B
标签: android android-fragments fragment call