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.thisindique à Java que vous vous attendez à être contenu dans une classe appeléeContextet que vous souhaitez pointer vers l'instance contenante.