J'ai une application que je modernise. Une étape de ce processus consiste à passer à une présentation basée sur des fragments (à l'aide des fragments de la bibliothèque de support) . J'ai converti mes activités en fragments et la mise en page a bien fonctionné (avec un ViewPager, des trucs sympas!)
J'avais mes activités implémenter OnClickListener pour tous mes besoins pressants. Les nouvelles incarnations de Fragment font la même chose bien sûr, mais il semble que "onClick" ne soit jamais touché. Y a-t-il quelque chose de spécial dans les fragments qui les empêche de fonctionner de cette façon?
Il suffit de faire un ceci
public class fragmentOne extends Fragment implements OnClickListener {
Button myButton;
@Override
public View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedinstanceState) {
View myView = inflater.inflate(R.layout.fragment_1, container, false);
myButton = (Button) myView.findViewById(R.id.myButton);
myButton.setOnClickListener(this);
return myView;
}
@Override
public void onClick(View v) {
// implements your things
}
}
très simple
Je vais me concentrer pour utiliser l'action OnClick pour un accès global. Vous devez faire comme ceci est votre projet. Vous devez implémenter le View.OnClickListener , puis remplacer la méthode. OnClick () , In OnCreateView () doit faire comme ceci button_submit.setOnClickListener (this); pour les vues dont vous avez besoin, Veuillez voir le code ci-dessous pour une réponse claire, merci.
public class New_Project extends Fragment implements View.OnClickListener{
private View mView;
private EditText edttxt_projectname;
private Button button_submit;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.fragment_newproject, container,false);
edttxt_projectname=(EditText)mView.findViewById(R.id.edttxt_projectname);
button_submit=(Button)mView.findViewById(R.id.button_submit);
button_submit.setOnClickListener(this);
return mView;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button_submit:
edttxt_projectname.setText("Test Submit!#@%!#%");
break;
default:
break;
}
}
}
Je veux commenter la réponse de Abhijit Chakra, mais il me semble que je dois avoir 50 représentants pour cela. Pour ceux qui se demandent si vous ne pouvez pas utiliser la réponse d'Abhijit, c'est à cause de:
public void OnClick(View v) {
// implements your things
}
Vous devez vous assurer qu'il est onClick, PAS OnClick. Heureusement, le message d'erreur interne d'Android Studio est venu à la rescousse.
view.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
switch (v.getId()) {
case R.id.imgView1:
Toast.makeText(getActivity(), "Long pressing", Toast.LENGTH_SHORT).show();
updateImage();
break;
case R.id.imgView2:
Toast.makeText(getActivity(), "Long pressing", Toast.LENGTH_SHORT).show();
updateImage();
break;
case R.id.imgView3:
Toast.makeText(getActivity(), "Long pressing", Toast.LENGTH_SHORT).show();
updateImage();
break;
default:
break;
}