2017-09-29 9 views
0

Je gonfle une mise en page qui contient un bouton image. J'essaye d'assigner un événement à l'imageButton de sorte que chaque fois qu'il est cliqué, il fait le travail. Voici mon code (en C#):Obtenir "une référence d'objet est nécessaire pour accéder au membre non statique" dans la mise en page

public class HomeScreenAdapter : BaseAdapter<TableItem> 
    { 
     List<TableItem> items; 
     Activity context; 
     public HomeScreenAdapter(Activity context, List<TableItem> items) 
      : base() 
     { 
      this.context = context; 
      this.items = items; 
     } 
     public override long GetItemId(int position) 
     { 
      return position; 
     } 
     public override TableItem this[int position] 
     { 
      get { return items[position]; } 
     } 
     public override int Count 
     { 
      get { return items.Count; } 
     } 
     public override View GetView(int position, View convertView, ViewGroup parent) 
     { 
      var item = items[position]; 
      View view = convertView; 
      if (view == null) // no view to re-use, create new 
       view = context.LayoutInflater.Inflate(Resource.Layout.ticket_news, null); view.FindViewById<ImageView>(Resource.Id.Image).SetImageBitmap(item.imageBitmap); 
      view.FindViewById<ImageButton>(Resource.Id.imageButton2).Click += delegate 
      { 
       Intent sharingIntent = new Intent(Intent.ActionSend); 
       sharingIntent.SetType("text/plain"); 
       sharingIntent.PutExtra(Intent.ExtraText, "Message"); 
       StartActivity(Intent.CreateChooser(sharingIntent, "Share via")); // here where I am getting the error 
       PackageManager pm = PackageManager; // and here I am getting the same error again 
      }; 
      return view; 
     } 
    } 

Une référence d'objet est nécessaire pour accéder à champ non statique 'ContextWrapper.SartActivity (intention)'

Pourquoi suis-je recevoir cette erreur et comment le résoudre? Merci

+1

Essayez d'utiliser la référence de contexte pour démarrer une nouvelle activité comme context.StartActivity (....); –

+0

Merci, ça a marché! Si je veux initialiser le gestionnaire de paquets comme ceci: 'PackageManager pm = PackageManager;' Je reçois la même erreur que pour 'StartActivity'. Comment celui-ci peut-il être résolu? –

+0

Pouvez-vous s'il vous plaît partager ce code ici, donc je vais vérifier et vous faire savoir, mais vous devez accepter et comme je le suggère par commentaire afin qu'il puisse aider d'autres vous résoudre le même problème. –

Répondre

0

Il est semble que vous devez Contexte référence pour commencer l'activité de la classe adaptateur et vous avez déjà référence contenu si juste l'utiliser comme ci-dessous:

context.StartActivity(Intent.CreateChooser(sharingIntent, "Share via")); 

vous pouvez également obtenir par exemple PackageManager en utilisant le contexte :

PackageManager packageManager = context.getPackageManager(); 
+0

Cela n'a pas fonctionné pour packageManager –

+0

Quel est le problème, il est donné une instance nulle? –

+0

J'ai des problèmes avec 'context.StartActivity'. Le 'createchooser' est lancé plusieurs fois. Disons que j'ai cliqué sur le bouton image et le createchooser a lancé et j'ai choisi Whatsapp, je repasse et le createchhoser re-lauch automatiquement sans cliquer à nouveau sur le bouton image. Comment résoudre ceci? –