【发布时间】:2019-01-22 18:10:04
【问题描述】:
在片段上调用 fragmentTransaction.show(fragment) 之后,片段会发生什么?片段的哪些回调方法会被调用?似乎没有调用 onResume 。 与隐藏(片段)相同的问题。
根据Android reference,onResume 仅在添加片段时调用。
【问题讨论】:
在片段上调用 fragmentTransaction.show(fragment) 之后,片段会发生什么?片段的哪些回调方法会被调用?似乎没有调用 onResume 。 与隐藏(片段)相同的问题。
根据Android reference,onResume 仅在添加片段时调用。
【问题讨论】:
你可以实现方法public void onHiddenChanged(boolean hidden)。
当你调用 fragmentTransaction.show() 时,onHiddenChanged(boolean hidden) 将被调用。 hidden 确定片段是否显示。
【讨论】:
我正在这样做,现在可以工作
private void showFragment(String fragmentTag){
initFragment(fragmentTag);
FragmentTransaction trasaction = getSupportFragmentManager().beginTransaction();
FragmentActions fragment = (FragmentActions) getSupportFragmentManager().findFragmentByTag(fragmentTag);
if(fragment==null ){
if(lastFragmentviewed!=null)
trasaction.hide(lastFragmentviewed);
fragment = (FragmentActions) newInstance(fragmentTag);
trasaction.add(R.id.content_frame,(Fragment) fragment,fragmentTag);
}else{
if(lastFragmentviewed!=null && !lastFragmentviewed.equals(fragment))
trasaction.hide(lastFragmentviewed);
if(getSupportFragmentManager().findFragmentByTag(fragmentTag)!=null){
fragment.init();
trasaction.show((Fragment) fragment);
}else
trasaction.add(R.id.content_frame,(Fragment) fragment,fragmentTag);
}
lastFragmentviewed=(Fragment) fragment;
trasaction.commit();
}
public interface FragmentActions {
public void init();
}
【讨论】: