2017-09-18 1 views
0

Est-ce que je peux éventuellement désactiver/activer un élément de menu option à partir d'un bouton à l'intérieur de fragments? Sur mon projet, je veux désactiver un élément de menu spécifique une fois que j'ai réussi à me connecter à partir de fragment. Exemple J'ai cette entrée (bouton) à l'intérieur de la disposition des fragments, une fois que le nom d'utilisateur et le mot de passe sont corrects, je veux désactiver l'option de menu de connexion. Les gars pouvez-vous me donner un exemple sur la façon de le coder? Merci beaucoup d'avance les gars !!! : ')Activer/désactiver un élément de menu option à partir du fragment

Répondre

0

Appelez InvalidateOptionsMenu ou supportInvalidateOptionsMenu lorsque vous souhaitez modifier le menu.

https://developer.android.com/reference/android/support/v4/app/FragmentActivity.html#supportInvalidateOptionsMenu()

cela entraînera OnPrepareOptionsMenu à appeler où vous pouvez faire tout ce que vous change comme à votre menu. Par exemple, désactiver ou masquer une option « Connexion » si vous êtes déjà connecté.

https://developer.android.com/reference/android/app/Activity.html#onPrepareOptionsMenu(android.view.Menu)

0

Oui, vous pouvez activer/désactiver optionmenu élément de fragment. Remplacer ces méthodes dans le fragment.

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

@Override 
public void onPrepareOptionsMenu(Menu menu) { 
     super.onPrepareOptionsMenu(menu); 
     menu.findItem(R.id.menuItem1).setEnabled(false/true); 
} 
0
I am not doing it correctly. please help. This is my Fragment.java page. I want to disable the log-in option item menu once the login process become successful. 

public void setL_cancel(){ 
    log_cancel.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      FragmentManager fm4 = getFragmentManager(); 
      FragmentTransaction ft4 = fm4.beginTransaction(); 
      FragmentRoyale fragmentRoyale = new FragmentRoyale(); 
      ft4.replace(R.id.relativeLayout, fragmentRoyale); 
      ft4.commit(); 
     } 
    }); 

} 
public void setL_enter(){ 
    l_enter.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      String name_admin = l_name.getText().toString(); 
      String password_admin = l_password.getText().toString(); 

      String fetchPassWord = database_info.loginEntry(name_admin); 
      if(password_admin.equals(fetchPassWord)) 
      { 
       FragmentManager fm_login = getFragmentManager(); 
       FragmentTransaction ft_login = fm_login.beginTransaction(); 
       FragmentRoyale fr_royale = new FragmentRoyale(); 
       ft_login.replace(R.id.relativeLayout, fr_royale); 
       ft_login.commit(); 

       Toast.makeText(getContext(), "Welcome!", Toast.LENGTH_SHORT).show(); 
       onPrepareOptionsMenu(menu); 

      } 
      if (!password_admin.equals(fetchPassWord)) 
      { 
       l_name.setText(""); 
       l_password.setText(""); 
       Toast.makeText(getContext(), "Username and password didn't match!", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
} 

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

@Override 
public void onPrepareOptionsMenu(Menu menu) { 
    super.onPrepareOptionsMenu(menu); 
    menu.findItem(R.id.create_account).setVisible(false); 

} 

}