2

我有一个带有片段 FA 的活动 A,从这个片段我转到 FAB,最后一个片段是一个 FragmentPagerAdapter。当我从 A 到 FA 到 FB 时,按返回按钮并返回到 FA,然后再次转到 FB,这个片段没有显示任何内容。

我的来自寻呼机适配器的 getView 方法没有被调用。

这是我的交易代码:

从 A 到 FA:

private void setFragment() {
        FragmentManager fragmentManager = getSupportFragmentManager();
        Fragment replyGroupsFragment = new ReplyGroupsFragment();
        Bundle bundle = new Bundle();
        bundle.putString("title", reportName);
        replyGroupsFragment.setArguments(bundle);
        fragmentManager.beginTransaction().replace(R.id.container, replyGroupsFragment, "ReplyGroupsFragment").commit();
        getSupportActionBar().setTitle(getString(R.string.info));
        getSupportActionBar().setDisplayShowTitleEnabled(true);
    }

从 FA 到 FB(使用黄油刀)

@OnItemClick(R.id.listViewReplyGroup)
    void listClick(int position) {
        List<DomainReplie> domainReplieArrayList = generateRepliesList(position);
        setRepliesFragment((ArrayList<DomainReplie>) domainReplieArrayList);
 }

我的 PagerFragment 包含以下内容:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ReplyGroupsActivity replyGroupsActivity = (ReplyGroupsActivity) getActivity();
        List<DomainReplie> replies = getArguments().getParcelableArrayList("replies");
        adapter = new PagerAdapter(replyGroupsActivity.getSupportFragmentManager(), this, replies);
        setActionBar();
    }

    @Override
    public void onResume() {
        super.onResume();
        FirextApplication.getInstance().getBus().register(this);
    }

    @Override
    public void onPause() {
        super.onPause();
        FirextApplication.getInstance().getBus().unregister(this);
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        View view = inflater.inflate(R.layout.work_containter_replies, container, false);
        ButterKnife.inject(this, view);
        pager.setAdapter(adapter);
        return view;
    }

两种情况下的生命周期都是相等的,但在第二轮屏幕中没有显示任何内容。

4

1 回答 1

0

有点晚了,但也许它会帮助别人。

我有同样的问题。最后我解决了它,我犯了和你一样的错误......这是导致问题的行:

fragmentManager.beginTransaction().replace(R.id.container, replyGroupsFragment, "ReplyGroupsFragment").commit();

您正在调用replace(),但replace()只是替换了当前片段-您必须调用add()将另一个片段添加到后堆栈-这也是修复 ButterKnife 以再次加载/更新视图的原因。

注意:ButterKnife 变化很大!使用bind()代替inject()

于 2016-11-07T21:44:18.017 回答