web-dev-qa-db-fra.com

méthode ne remplace pas la méthode de sa super-classe. Fragment Android

fragment1:

public class fragment1 extends Fragment implements View.OnClickListener {
    ImageButton but, but1, but2;
    ImageView view;
    @Override << this one
    public View OnCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View myView = inflater.inflate(R.layout.fragment1, null);
        but = (ImageButton) myView.findViewById(R.id.imageButton11);
        but.setOnClickListener(this);
        but1 = (ImageButton) myView.findViewById(R.id.imageButton1);
        but1.setOnClickListener(this);
        but2 = (ImageButton) myView.findViewById(R.id.imageButton2);
        but2.setOnClickListener(this);
        return myView;
    }

    @Override
    public void onClick(View v) {
        main xxx = (main)getActivity();
        switch (v.getId()) {
       case R.id.imageButton11:
                xxx.str="but1";
                break;
..
            }}

principale:

Fragment frag1 = new fragment1();
    fr1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    fTrans = getFragmentManager().beginTransaction();
                    fTrans.replace(R.id.frameLayout2, frag1);
                    fTrans.addToBackStack(null);
                    fTrans.commit();
                }
            });

la méthode ne remplace pas la méthode de sa super-classe dans fragment1 (première substitution) mais sans "implemets View.OnClickListener", elle fonctionne

4
pmipmi

Erreur d'orthographe. Nommez la méthode onCreateView au lieu de OnCreateView.

17
Bubletan

Je ne connais pas le sdk Android mais je pense que vous avez besoin de quelque chose comme ça

Fragment frag1 = new fragment1(){
         @Override
         public void onClick(View view) {
              fTrans = getFragmentManager().beginTransaction();
              fTrans.replace(R.id.frameLayout2, frag1);
              fTrans.addToBackStack(null);
              fTrans.commit();
         }
 };
0
SteveL

retourner votre vue gonflée

public View onCreateView(.....) {
...
...

return InputFragmentView;
}

et changez OnCreateView en onCreateView . vous pouvez appuyer sur ctrl + o pour le préparer ^^

0
B.Moataz

Dans mon cas, je ne l'étendais pas de Fragment. Assurez-vous d'étendre votre fragment de la classe Fragment.

public class fragment1 extends Fragment implements View.OnClickListener {
   @Override
///   public View onCreateView.......
}
0
Ramesh Pareek