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 ...
3 Réponses :
Vous pouvez utiliser getContext () pour démarrer l'activité dans le fragment
Intent intent = new Intent(getContext(), AnmeldungButton.class); startActivity(intent);
Merci mon frère, tu m'as beaucoup aidé à vermier :)
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 });
Merci beaucoup Ashim ... J'ai déjà tout essayé. J'apprécie vraiment cela ...
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; } }
Context.this
indique à Java que vous vous attendez à être contenu dans une classe appeléeContext
et que vous souhaitez pointer vers l'instance contenante.