交易后的黑色碎片

时间:2014-08-10 17:31:30

标签: android

我有一个带TabMenu的FragmentActivity。我的菜单打开一个DialogFragment,随后调用一个刷新TabMenu中第一个片段的方法,但是当我调用此方法时,第二个片段(第二个部分选项卡)将变为空白。我无法理解为什么。

这是片段及其刷新方法:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_home_company, container, false);

    ......

    observer = new HomeCompanyFragmentController(this, this.getActivity().getBaseContext());


    return rootView;
}


public void refresh(){
    FragmentManager manager = getActivity().getSupportFragmentManager();
    FragmentTransaction ft = manager.beginTransaction();
    Fragment newFragment = this;
    this.onDestroy();
    ft.remove(this);
    ft.replace(R.id.pager,newFragment);
    ft.addToBackStack(null);
    ft.commit();

}

我遵循了本教程:http://developer.android.com/training/implementing-navigation/lateral.html

这里我将返回我的片段:

 @Override
 public Fragment getItem(int i) {
        switch (i) {
            case 0:

                if(homeFragment == null){
                    homeFragment = new HomeCompanyFragment();
                }

                return homeFragment;
}

1 个答案:

答案 0 :(得分:0)

我不确定这是导致您出现问题的原因,但您绝对不应该从您尝试删除的片段执行片段事务。这个动作应该由托管这些片段的活动来处理,并且应该使用" listener"图案。尝试将该逻辑放入活动中,看看它是否有帮助。

此链接跳转到与活动进行通信的部分,但整个过程值得一读。

http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity