我知道我不是第一个问这个问题的人,但是我已经参考了很多关于这个问题的帖子,但是我的问题没有得到解决。
我想做的是在我的MainActivity(底部导航栏活动)我有底部导航栏,在这个MainActivity我有卡片视图如果我点击卡片视图,我需要显示该片段中的另一个片段,我想隐藏底部导航栏。当我导航回MainActivity botoom导航栏时,导航栏应该在那里。
在我的情况下,Alarm.java是我想隐藏底部导航栏的片段。
Alarm.java
public class Alarm extends Fragment {
private OnFragmentInteractionListener mListener;
public Alarm() {
}
public static Alarm newInstance(String param1, String param2) {
Alarm fragment = new Alarm();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_alarm, container, false);
}
public void onButtonPressed(Uri uri) {
if (mListener != null) {
mListener.onFragmentInteraction(uri);
}
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnFragmentInteractionListener) {
mListener = (OnFragmentInteractionListener) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement OnFragmentInteractionListener");
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
public interface OnFragmentInteractionListener {
void onFragmentInteraction(Uri uri);
}
}
我曾尝试过@Suleyman的方法,但对我无效。最简单的解决方案是在MainActivity
中使用公共静态方法,并从要隐藏底部导航栏的片段引用它。
不要忘记将
navView
初始化为公共静态
。
在您的
main活动中
public static void hideBottomNav(){
navView.setVisibility(View.GONE);
}
public static void showBottomNav(){
navView.setVisibility(View.GONE);
}
在您的
我的片段
中
@Override
public void onResume() {
super.onResume();
MainActivity.hideBottomNav();
}
@Override
public void onStop() {
super.onStop();
MainActivity.showBottomNav();
}
在您的Mainactive
中,您可以实现两个方法,它们将负责显示和隐藏您的BottomNavigationView
。例如,这两个方法对它上下滑动进行动画处理:
private void hideBottomNavigationView(BottomNavigationView view) {
view.clearAnimation();
view.animate().translationY(view.getHeight()).setDuration(300);
}
public void showBottomNavigationView(BottomNavigationView view) {
view.clearAnimation();
view.animate().translationY(0).setDuration(300);
}
在Mainactive
中,您在打开CardView
之前调用隐藏
,并在onCreate
或onResume
中调用show
。
编辑:
但是,我认为一个更干净的方法可能是在您的片段中创建一个接口:
public interface OnCardViewOpenedInterface{
void onOpen(); // hide bottom bar when photo is opened
void onClose(); // show bottom bar when photo is opened
}
并在片段的
onStop
和on resume
,调用这些方法:
@Override
public void onStop() {
super.onStop();
mListener.onClose();
}
@Override
public void onResume() {
super.onResume();
mListener.onOpen();
}
然后在您的
Mainactive
中实现接口,覆盖方法onOpen()
和onClole()
并在内部调用您的隐藏
和show
方法。
它们可能都有效,也许第二个过于复杂,只是我更喜欢它。
我正在开发包含2个片段的应用程序,我想根据需要显示隐藏。下面的代码有一个简单的例子来说明我的问题。这个简单的Fragmentactivity包含一个按钮和一个listfragment。 这个简单的例子完美无瑕。但我不满足于展示隐藏片段。如果删除布局。设置可见性(View.GONE);然后从代码中选择ft.hide(f);不会隐藏碎片。事实上,我们不是在隐藏片段,而是在隐藏容器。 我的问题是,这是一
我使用的是Hybris版本20.05(Cloud)。backoffice树中有一个“CloudCommons”字段。但是,如果登录员工的组中有“TestRabia”,我不希望用户看到“CloudCommons”字段。但是仍然拥有“TestRabia(UserGroup)”的用户会看到“CloudCommons”字段。 为此:。。。后台后台配置。xml我添加了以下代码: 我怎样才能解决这个问题?非常
在我的android应用程序中,当用户聚焦SearchView时,我希望底部的菜单栏消失(这也会弹出软键盘)。当SearchView失去焦点时,我想再次显示底部的导航栏。 我尝试过使用,视图确实隐藏或显示,但由于某种原因,它总是保留其高度。下面是我BottomNavigationView的代码: 处理隐藏/显示导航栏的代码: BottomNavigationView由线性布局控制,如下所示:
问题内容: 我有一个使用服务几个片段。每个都是具有以下布局的: 开始活动时,将显示软键盘。为了解决这个问题,我在片段中做了以下操作: 我将传入的参数保存为一种访问主要活动的窗口令牌的方式。这可以正常运行,但是不会打扰到in 的键盘。 最初,我尝试使用膨胀布局代替,即: 但这引发了,大概是因为该片段本身不是活动,并且没有唯一的窗口令牌吗? 是否可以从片段中隐藏软键盘,还是应该在中创建一个方法并从片段
我试图从活动中隐藏/显示片段中的按钮,但它给了我以下异常。 android.view.ViewRootImpl$CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触摸其视图。 家庭活动 类别片段 代码太大,无法在此处发布。这就是为什么我只在发现问题的地方发布代码。 我能够获得新设计按钮实例。令我震惊的是,如果尝试玩按钮实例(可见/消失),它会给我上述异
我有一个片断,它包含了ImgaeView(s)在它的XML中,我从这些图像导航到另一个片断,但问题是底页保持打开,当我导航到另一个片断时,如何使它折叠? 这是底片的图片 在这里,我导航到另一个片段,但底部页仍然显示在屏幕上 下面是片段内部的代码 所以我的问题是: 在我导航到另一个片段后,如何使它崩溃?