![](/img/trans.png)
[英]Hide ActionBar MenuItems when Navigation Drawer slides for any amount
[英]How to hide navigation drawer `menuitems` when particular fragment is selected?
这是登录片段:
public class Login extends Fragment {
TextInputEditText u_name,u_pass;
String name_user,password_user;
Button login_btn;
TextView user_register;
String PREF="myData";
SharedPreferences preferences;
SharedPreferences.Editor editor;
NavigationView navigationView;
public Login() {
// Required empty public constructor
}
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view= inflater.inflate(R.layout.fragment_login, container, false);
u_name=(TextInputEditText) view.findViewById(R.id.user_name);
u_pass=(TextInputEditText) view.findViewById(R.id.user_password);
login_btn=(Button) view.findViewById(R.id.submit_btn);
user_register=(TextView) view.findViewById(R.id.register_user);
//setting up navigationview text and image
navigationView=(NavigationView) view.findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
login_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
name_user=u_name.getText().toString().trim();
password_user=u_pass.getText().toString();
if (name_user.isEmpty())
{
u_name.setError("Enter email address");
}
else if (password_user.isEmpty())
{
u_pass.setError("Enter password");
}
else
{
loginUser();
}
}
});
user_register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentManager fragmentManager=getFragmentManager();
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.containerView,new RegisterUser()).addToBackStack(null).commit();
}
});
return view;
}
private void loginUser()
{
final ProgressDialog pd=ProgressDialog.show(getActivity(),"Login","Please wait",false);
StringRequest loginRequest=new StringRequest(Request.Method.POST, "http://mywebdata.com/webservice/logincheck.php", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
pd.dismiss();
//Toast.makeText(getActivity(), ""+response, Toast.LENGTH_LONG).show();
if (response.contains("Invalid Email Address and Password"))
{
Toast.makeText(getActivity(), "Invalid Email Address and Password", Toast.LENGTH_SHORT).show();
}
else
{
getLoginUser(response);
}
//Log.e("login",""+response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pd.dismiss();
Log.e("Error",""+error.toString());
Toast.makeText(getActivity(), "Network error please try again", Toast.LENGTH_SHORT).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> map=new HashMap<String, String>();
map.put("usrname",name_user);
map.put("passwrd",password_user);
return map;
}
};
RequestQueue queue= Volley.newRequestQueue(getActivity());
queue.add(loginRequest);
}
private void getLoginUser(String user)
{
ParseJson parseJson=new ParseJson(user);
parseJson.parseUserLogin();
if (ParseJson.login_mail[0].equals(name_user))
{
preferences=getActivity().getSharedPreferences(PREF, Context.MODE_PRIVATE);
editor=preferences.edit();
editor.putString("LOGIN_USER",ParseJson.login_id[0]);
editor.putString("LOGIN NAME",ParseJson.login_name[0]);
editor.commit();
}
else
{
Toast.makeText(getActivity(), "Invalid user name,Try again", Toast.LENGTH_SHORT).show();
}
}
}
问题是何时调用navigationView.setNavigationItemSelectedListener(this);
它给我一个错误,我不能称这个witihn片段为Login。
谢谢你的时间...
在fragment/activity
实现以下接口:
NavigationView.OnNavigationItemSelectedListener
在oncreate/oncreateView
内添加以下代码
navigationView.setNavigationItemSelectedListener(this);
您执行操作时,您的片段没有实现的'NavigationView.OnNavigationItemSelectedListener'
navigationView.setNavigationItemSelectedListener(this);
这样做
public class Login extends Fragment implements
NavigationView.OnNavigationItemSelectedListener
并重写方法,您就可以开始了
更新:在选定特定片段时隐藏和显示navigationView
menuitems
1.)在您的活动中初始化navigationView
2.)内部导航监听器
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
if(menuItem.getItemId()==R.id.login_fragment ) {
// to hide items
navigationView.getMenu().findItem(R.id.item_to_hide).setVisible(false);
// to show items
navigationView.getMenu().findItem(R.id.item_to_show).setVisible(true);
}
return true;
}
});
其中getMenu()
为您提供菜单对象
findItem(id)
为您提供隐藏/显示menuitem
setVisibile()
会将menuitem
的状态修改为可见/不可见
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.