自动隐藏工具栏不会出现在新片段上

Auto-hided Toolbar does not reappear on new Fragment

我有一个 activity 应用程序实现了(到目前为止)三个不同的片段:

MainActivity - 负责片段之间的切换
HomeFragment - 应用程序的主屏幕
TasksFragment - 包括带有 CardView 的 RecyclerView 和在垂直滚动时自动隐藏工具栏 AssesmentFragment -

(主要)问题:
在 TasksFragment 中,当滚动到 RecyclerView 底部后隐藏 Toolbar 时,按下 CardView 上的 Button 并创建 AssessmentFragment 并滑入。

我糟糕的快速修复:

public class TasksAdapter extends
    RecyclerView.Adapter<TasksAdapter.ViewHolder> {

    (... details omitted ...)

    viewHolder.messageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (position) {
                case 0:
                    //http://stackandroid.com/tutorial/custom-dialog-with-user-input/
                    Log.i("Press", "" + position);
                    break;
                case 1:
                    Log.i("Press", "" + position);
                    break;
                case 2:
                    Log.i("Press", "" + position);

                    MainActivity mainActivity = (MainActivity) mContext;
                    mainActivity.moveToolbarUp();
                    mainActivity.taskToAssessment();
                break;
            }
    });
}

MainActivity

public void moveToolbarUp() {
    TranslateAnimation anim = new TranslateAnimation(0, 0, -50, 122);
    anim.setDuration(400);
    toolbar.startAnimation(anim);
    anim.setFillAfter(true);
    //toolbar.setTranslationY(0);
}

public void taskToAssessment() {
    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.setCustomAnimations(R.anim.left_in, R.anim.left_out);
    AssessmentFragment af = new AssessmentFragment();
    ft.replace(R.id.mainFragment, af);
    ft.addToBackStack(null);
    ft.commit();
}

看起来像这样:

一开始看起来还不错,但正如您所见,新 Fragment 中的后退按钮不可按,而且当返回到之前的 Fragment 时,工具栏现在的位置完全错误。

有没有人知道如何改进这个?我想:随时可以访问工具栏,并在隐藏时重新出现。必须有更好的方法来做到这一点。当更改为新片段时,我希望看到一些替代方法来处理从 recyclerview 滚动时隐藏的工具栏。肯定有人遇到过类似的问题!

如果需要,我当然会提供更多代码片段!谢谢。

通过添加

修复
toolbar.animate().translationY(toolbar.getTop()).setInterpolator(new AccelerateInterpolator()).start();

MainActivitytaskToAssessment():

public void taskToAssessment() {
    toolbar.animate().translationY(toolbar.getTop()).setInterpolator(new AccelerateInterpolator()).start();
    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.setCustomAnimations(R.anim.left_in, R.anim.left_out);
    AssessmentFragment af = new AssessmentFragment();
    ft.replace(R.id.mainFragment, af);
    ft.addToBackStack(null);
    ft.commit();
}