我像这样添加第一个片段
FragmentManager fm = SliderActivity.this
.getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Fragment fragment = null;
fragment = new HomeFragment();
ft.add(R.id.content_fragment, fragment, "Home");
ft.addToBackStack("Home");
ft.commit();
Run Code Online (Sandbox Code Playgroud)
和第二个片段
FragmentManager fm = SliderActivity.this
.getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Fragment fragment = null;
fragment = new HomeFragment();
ft.add(R.id.content_fragment, fragment, "About");
ft.addToBackStack("About");
ft.commit();
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我按下AboutFragment(第二个)的按钮,然后如何调用HomeFragment的方法(第一个)
onResume() is not fired which is creating problem
Run Code Online (Sandbox Code Playgroud)
我发帖迟到,但我认为这对其他人有用
虽然我们使用add()Fragment事务,但onResume()不会在Source片段上调用.只有Destination片段才会获得onResume()回调
但是使用这种方式,我们可以实现onResume()对Source片段的回调:
在Host Activity中添加它 onBackPressed()
@Override
public void onBackPressed() {
getSupportFragmentManager().getFragments()
.get(getSupportFragmentManager().getBackStackEntryCount() - 1).onResume();
super.onBackPressed();
}
Run Code Online (Sandbox Code Playgroud)
注:请确保您有人称addToBackStack()与commit()
此代码将onResume()回调Source片段
谢谢