我正在使用Android应用程序。有一个称为HomeActivity的活动,上面有一个BottomNavigationView。

也有几个片段。

从一个名为SpotsSearch2Fragment的片段中,我打开另一个名为NuevoSpot1Fragment的片段:

 ivNuevoSpot.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                NuevoSpot1Fragment nextFrag= new NuevoSpot1Fragment();
                getActivity().getSupportFragmentManager().beginTransaction()
                        .add(R.id.frame_layout, nextFrag, "mapaSpots")
                        .addToBackStack(null)

                        .commit();
            }
        });


在NuevoSpot1Fragment中,我从父Activity隐藏了BottomNavigationView:

((HomeActivity) getActivity()).setNavigationVisibility(false);


正常,BottomNavigationView消失了。

这是HomeActivity中的函数,由片段调用以隐藏或显示BottomNavigationView:

public void setNavigationVisibility(boolean visible) {
        if (bottomNavigationView.isShown() && !visible) {
            bottomNavigationView.setVisibility(View.GONE);
        }
        else if (!bottomNavigationView.isShown() && visible){
            bottomNavigationView.setVisibility(View.VISIBLE);
        }
    }


NuevoSpot1Fragment上有一个按钮,应再次打开片段SpotsSearch2Fragment。

btnCerrar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getFragmentManager().popBackStack();
            }
        });


因此,我在SpotsSearch2Fragment中包含了代码:

 @Override
    public void onResume() {
        super.onResume();
        Log.d("JSON", "on resume spot");

        ((HomeActivity) getActivity()).setNavigationVisibility(true);
    }


我的问题是,从NuevoSpot1Fragment回到SpotsSearch2Fragment,SpotsSearch2Fragment中的BottomNavigationView仍然不可见。

我究竟做错了什么?

编辑

在不可见的情况下显示不可见的BottomNavigationView:

android - 再次显示BottomNavigationView后未显示-LMLPHP

最佳答案

更换:

public void setNavigationVisibility(boolean visible) {
    if (bottomNavigationView.isShown() && !visible) {
        bottomNavigationView.setVisibility(View.GONE);
    }
    else if (!bottomNavigationView.isShown() && visible){
        bottomNavigationView.setVisibility(View.VISIBLE);
    }
}


带有:

public void setNavigationVisibility(boolean visible) {
    if ((bottomNavigationView.getVisibility() == View.VISIBLE) && !visible) {
        bottomNavigationView.setVisibility(View.GONE);
    }
    else if ((bottomNavigationView.getVisibility() != View.VISIBLE) && visible){
        bottomNavigationView.setVisibility(View.VISIBLE);
    }
}


编辑:并且我建议您在片段中包含此代码以避免Fragments中的NullPointerException,并从setNavigationVisibility变量调用mActivity方法,并在Fragment中全局声明mActivity

@Override
public void onAttach(Context context) {
    super.onAttach(context);

    if (context instanceof HomeActivity){
        mActivity = (HomeActivity) context;
    }
}

关于android - 再次显示BottomNavigationView后未显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58354855/

10-12 02:43