2017-09-29 4 views
0

imageButton이 포함 된 레이아웃을 부 풀리고 있습니다. 클릭 할 때마다 작업을 수행 할 수 있도록 imageButton에 이벤트를 지정하려고합니다. 다음은 (C#에서) 내 코드입니다 :레이아웃 인플레이터의 "비 정적 멤버에 액세스하는 데 객체 참조가 필요합니다."

객체 참조가 비 정적 필드 'ContextWrapper.SartActivity (의도)'

하는 이유는 무엇입니까 액세스하는 데 필요한

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; 
     } 
    } 

이 오류와 어떻게 해결할 수 있습니까? 는

+1

컨텍스트 참조를 사용하여 context.StartActivity (....)와 같은 새 활동을 시작하십시오. –

+0

감사합니다. 효과가있었습니다! 만약 내가'PackageManager pm = PackageManager; '와 같은 패키지 관리자를 초기화하고 싶다면'StartActivity'와 같은 오류가 발생합니다. 이게 어떻게 풀릴 수 있니? –

+0

여기에서 코드를 공유해 주시면 알려 드리겠습니다.하지만 같은 문제를 해결하는 데 도움이 될 수 있도록 의견을 통해 제안하는대로 대답을 받아 들여야합니다. –

답변

0

그건 당신이 어댑터 클래스에서 활동을 시작 상황 참조가 필요한 것 같아 당신은 이미, 그래서 그냥 다음과 같이 사용 내용 참조가 감사 : 또한이 컨텍스트를 사용하여 패키지 매니저 인스턴스를 받고 있습니다

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

:

PackageManager packageManager = context.getPackageManager(); 
+0

그것은 packageManager에 대해 작동하지 않았습니다 –

+0

null 인스턴스가 주어질 때 문제는 무엇입니까? –

+0

'context.StartActivity'에 몇 가지 문제가 있습니다. 'createchooser'는 여러 번 시작됩니다. imagebutton을 클릭하고 createchooser가 시작되었고 Whatsapp를 선택한 것으로 보았습니다. 다시 이미지 버튼을 클릭하지 않고 자동으로 뒤로 누르고 createchhoser를 다시 시작합니다. 어떻게 해결할 수 있을까요? –

관련 문제