簡體   English   中英

當按返回按鈕不更新FragmentAdapter時轉到上一個片段

[英]Go to previous fragment when press back button doesnt update FragmentAdapter

我有一個帶有片段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(使用butterkniffe)

@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;
    }

兩種情況下的生命周期都相等,但是在第二輪屏幕上什么也沒顯示。

有點晚了,但也許會幫助別人。

我有同樣的問題。 最終,我解決了它,並且犯了與您相同的錯誤...這是導致問題的行:

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

您正在調用replace() ,但是replace()只是替換當前片段-您必須調用add()以將另一個片段添加到堆棧中-這也是解決ButterKnife再次加載/更新視圖的問題。

注意:黃油刀變化很大! 使用bind()代替inject()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM