Comment fixer La méthode startActivity(Intent) n'est pas défini pour le type nouveau point de Vue.OnClickListener() erreur de syntaxe
J'ai une erreur de syntaxe avec mon code , dans le "getView" je veux faire un écouteur pour le bouton "mettre à jour" pour passer à une autre activité :
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater l = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
View rowView = l.inflate(R.layout.temp, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.textView1);
ImageView imageView = (ImageView) rowView.findViewById(R.id.imageView1);
Button update = (Button) rowView.findViewById(R.id.button1);
// update.setOnClickListener(new View.OnClickListener() {
//
// @Override
// public void onClick(View v) {
//
// Intent redirect = new Intent(getApplicationContext(),Update.class);
// startActivity(redirect);
//
// }
// });
textView.setText(sa.get(position));
return rowView;
}
J'ai essayé de corriger ces erreurs à propos de "l'Intention", mais je n'ai pas réussi 🙁
-
La méthode startActivity(Intent) n'est pas défini pour le type nouveau point de Vue.OnClickListener()
-
La méthode getcontexteapplication() n'est pas défini pour le type nouveau point de Vue.OnClickListener()
et même whene j'ai déplacé ces déclarations de "onClick" la méthode le problème n'a pas changé !!
J'ai importé une "Intention" de la bibliothèque , comment résoudre ce problème ????
- est votre carte de classe dans un fichier différent?
Vous devez vous connecter pour publier un commentaire.
Si votre carte est dans un autre fichier, vous devez contexte d'activité.
Vous avez besoin pour passer le contexte d'activité de votre classe d'activité de votre adaptateur constructeur.
http://developer.android.com/reference/android/content/Context.html#startActivity(android.content.Intent)
startActivity
est une méthode de votre classe d'activité. Si vous avez besoin d'contexte d'activité au début de l'activité.Aussi au lieu de
getApplicationContext
utiliser contexte d'activité.Quand appeler le contexte d'activité OU de contexte de l'application?
Vérifier la réponse par commonsware.
Essayer
pour le même problème pour moi tout ce qui m'a aidé :
ajouter du contexte dans la Catégorie G :
Vous avez juste besoin d'appeler
context.startActivity
au lieu de cela, pouvez suivre les étapes ci-dessousTrois étapes simples
1) Déclarer des Variables locales
Context mCtx
2) initialiser avec contexte d'Activité, soit en passant un paramètre au constructeur/méthode, ou dans la méthode onCreate si vous utilisez le code ci-dessus dans l'activité.
3) appel
mCtx.startActivity(intent);
ou
vous pouvez appeler
ActivityName.this.startActivity()
Edit: Comme par dmon commentaire, Vous ne pouvez tout simplement utiliser votre contexte local instance
La racine de votre problème est que vous ne pouvez pas démarrer une Activité dans un Contexte d'application (uniquement à partir d'un contexte d'activité, vous avez le droit de le faire). La raison pour cela est que android regroupe toutes les activités de votre application en tant que groupe (tâche) afin de permettre le multitâche entre les différentes applications. Lorsque vous lancez une nouvelle application, ou appuyez sur le bouton home par exemple, vous êtes à la demande (ainsi que de ses activités backstack) se passe à l'arrière-plan et quitte la scène pour une nouvelle tâche (avec une activité différente backstack et ainsi de suite et ainsi de suite). Pour plus d'informations sur ce mécanisme, vous pouvez prendre un coup d'oeil ici (http://developer.android.com/guide/components/tasks-and-back-stack.html).
Afin de gagner un contexte qui est ok pour lancer une nouvelle activité, vous pouvez toujours obtenir le contexte de la mère de la vue vous sont gonflage, en appelant viewgroup.getContext() - même si, vous aurez à déclarer la viewgroup final, ce qui est ok, puisque vous ne devriez pas être en contact avec le parent.
un projet de votre getView: