0
votes

Comment réparer: erreur: pas une classe englobante: contexte

J'ai l'erreur notée dans le titre: error: not an enclosing class: Context

J'ai déjà essayé dans d'autres forums de résoudre ce problème mais ils n'ont pas pu aider, j'ai vérifié youtube et d'autres questions sur stackoverflow mais je n'ai pas trouvé de réponse à ce problème.

Mon code ressemble à ceci:

error: not an enclosing class: Context

Cela produit l'erreur:

public class TermineFragment extends Fragment {

    private Button button;
    Context c;

    @Override
    public void onAttach(Context c) {
        super.onAttach(c);
        Context context = c;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull final LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.activity_3, container, false);
        button = view.findViewById(R.id.button1);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(Context.this, AnmeldungButton.class));
                startActivity(intent);
            }
        });

        return view;
    }
}

Qui vient de la ligne: Intent intent = new Intent (getActivity (Context.this, AnmeldungButton.class));

Je veux que mon bouton dans le fragment AnmeldungButton.java soit je veux dire dans l'activité mais J'espère que vous me comprenez ...


1 commentaires

Context.this indique à Java que vous vous attendez à être contenu dans une classe appelée Context et que vous souhaitez pointer vers l'instance contenante.


3 Réponses :


0
votes

Vous pouvez utiliser getContext () pour démarrer l'activité dans le fragment

Intent intent = new Intent(getContext(), AnmeldungButton.class);                   
startActivity(intent);


1 commentaires

Merci mon frère, tu m'as beaucoup aidé à vermier :)



0
votes

Utilisez ce code

Intent(Context packageContext, Class<?> cls)

Voici le problème que vous utilisez lorsque vous passez le paramètre de la mauvaise manière.

  button.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           Intent intent = new Intent(getActivity(),AnmeldungButton.class);
           startActivity(intent);
       }you a
   });


1 commentaires

Merci beaucoup Ashim ... J'ai déjà tout essayé. J'apprécie vraiment cela ...



0
votes
public class TermineFragment extends Fragment {

Context c;
@Override
    public void onAttach(Context c) {
        super.onAttach(c);
        this.c = c; //this is one of the best way to get context of the activity to which the particular activity is associated with
    }
   @Nullable
    @Override
    public View onCreateView(@NonNull final LayoutInflater inflater, @Nullable 
    ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.activity_3, container, false);
        button = view.findViewById(R.id.button1);
  button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
           Intent intent = new Intent(c,AnmeldungButton.class);//Pass the context like this.
           startActivity(intent);
        });
        return view;
    }
}

0 commentaires