我知道我不是第一个提出这个问题的人,但是我已经提到了很多关于这个问题的帖子,但没有解决我的问题。
我想要做的是在我的MainActivity(底部导航栏活动)我有底部导航栏,在这个MainActivity我有cardviews如果我点击cardview我需要在该片段中显示另一个片段我想要隐藏底部导航栏。当我导航回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);
}
}
答案 0 :(得分:1)
在MainActivity
中,您可以实施两种方法来负责显示和隐藏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);
}
在MainActivity
中,您在打开hide
之前立即致电CardView
,并在show
或onCreate
中致电onResume
。
修改强>
但是,我认为更简洁的方法可能是在片段中创建一个界面:
public interface OnCardViewOpenedInterface{
void onOpen(); // hide bottom bar when photo is opened
void onClose(); // show bottom bar when photo is opened
}
在onStop
的{{1}}和onResume
中调用这些方法:
Fragment
然后在@Override
public void onStop() {
super.onStop();
mListener.onClose();
}
@Override
public void onResume() {
super.onResume();
mListener.onOpen();
}
中实施界面,覆盖方法MainActivity
和onOpen()
,然后调用您的onClose()
和hide
方法。
他们可能都会工作,也许第二个过于复杂,只是我更喜欢它。
答案 1 :(得分:-1)
我尝试了@Suleyman的方法,但对我而言不起作用。最简单的解决方案是在 getJobs().then((jobs) => {
var mailPayload = {
to: emails,
from: "",
templateId: "",
dynamicTemplateData: {
subject: "Testing Templates",
name: "Some One",
city: "Denver",
week: "August 24 2020",
},
};
for (let i = 0; i < jobs.length; i++) {
mailPayload.dynamicTemplateData["job" + i] = {
header: jobs[i].job_title,
body: jobs[i].job_description,
cta: "Apply now",
url: jobs[i].company_url,
};
}
mail(mailPayload);
res.send("Mail sent Successfully").status(200);
});
});
中使用public static
方法,并从要隐藏底部导航栏的片段中引用它。
不要忘记将MainActivity
初始化为navView
。
在您的public static
MainActivity
在您的 public static void hideBottomNav(){
navView.setVisibility(View.GONE);
}
public static void showBottomNav(){
navView.setVisibility(View.GONE);
}
MyFragment