2016-09-23 5 views
1

여기 새내기. 자 마린을 사용하여 나의 첫 번째 응용 프로그램은 예외가 있습니다Xamarin의 Java.Lang.NullPointerException

Java.Lang.NullPointerException: Attempt to invoke virtual method 'int android.view.View.getImportantForAccessibility()' on a null object reference 

MainActivity :

public class MainActivity : Activity 
{ 
    List<TypeOfClasses> listOfClasses; 
    ListView listView; 
    ListArrayAdapter adapter;  
    protected override void OnCreate(Bundle savedInstanceState) 
    { 
      base.OnCreate(savedInstanceState); 
      SetContentView(Resource.Layout.Main); 
      Button button = FindViewById<Button>(Resource.Id.myButton); 
      listOfClasses = new List<TypeOfClasses>(); 
      listView = FindViewById<ListView>(Resource.Id.listView);  
      adapter = new ListArrayAdapter(this, Resource.Layout.List_item, listOfClasses); 
      listView.Adapter = adapter; 
      button.Click += delegate 
      { 
       var intent = new Intent(this, typeof(SecondActivity)); 
       StartActivityForResult(intent, 0); 
      }; 
    } 

    protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) 
    { 
     base.OnActivityResult(requestCode, resultCode, data); 
     TypeOfClasses toc = new TypeOfClasses(); 
     if (resultCode= Result.Ok) 
     { 
      toc.Subj = data.GetStringExtra("SUBJECT"); 
      toc.Lect = data.GetStringExtra("LECTURER"); 
      toc.Date = data.GetStringExtra("DATE"); 
      listOfClasses.Add(toc); 
      adapter.NotifyDataSetChanged(); 
    } 
} 

}

클래스 SecondActivity, 그 MainActivity에서 데이터를 전송 :

public class SecondActivity : Activity 
{ 
    public string value; 
    protected override void OnCreate(Bundle savedInstanceState) 
    { 
      base.OnCreate(savedInstanceState); 
      SetContentView(Resource.Layout.Second); 
      EditText edtTxtSubj = FindViewById<EditText>(Resource.Id.editTextSubject); 
      EditText edtTxtDt = FindViewById<EditText>(Resource.Id.editTextDate); 
      EditText edtTxtLec = FindViewById<EditText>(Resource.Id.editTextLecturer); 
      Button buttonAdd = FindViewById<Button>(Resource.Id.buttonAdd); 
      buttonAdd.Click += delegate 
      { 
       var intentSecond = new Intent(this, typeof(SecondActivity)); 
       intentSecond.PutExtra("SUBJECT", edtTxtSubj.Text.ToString()); 
       intentSecond.PutExtra("LECTURER", edtTxtLec.Text.ToString()); 
       intentSecond.PutExtra("DATE", edtTxtDt.Text.ToString()); 
       SetResult(Result.Ok, intentSecond); 
       Finish(); 
      }; 
     } 

}

ListArrayAdapter :

public class ListArrayAdapter : ArrayAdapter<TypeOfClasses> 
{ 
    List<TypeOfClasses> list; 
    Activity context; 
    int resource; 
    public ListArrayAdapter(Activity context, int resource, List<TypeOfClasses> items) 
     : base(context, resource, items) 
    { 
     this.context = context; 
     this.list = items; 
     this.resource = resource; 
    } 

    public override int Count 
    { 
     get { return list.Count; } 
    } 

    public override View GetView(int position, View convertView, ViewGroup parent) 
    {  
      View view = convertView; 
      if (view == null) 
       view = context.LayoutInflater.Inflate(LabProject1.Resource.Layout.List_item, null); 
      var txtSubj = view.FindViewById<TextView>(LabProject1.Resource.Id.textViewSubject); 
      var txtLect = view.FindViewById<TextView>(LabProject1.Resource.Id.textViewLecturer); 
      var txtDate = view.FindViewById<TextView>(LabProject1.Resource.Id.textViewDate); 
      txtSubj.Text = list[position].Subj; 
      txtLect.Text = list[position].Lect; 
      txtDate.Text = list[position].Date; 
      return convertView; 
    } 
} 

클래스 TypeOfClasses는 흔들림 감지, Lect, 날짜와 같은 속성이 포함되어 있습니다.

Main.axml :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <Button 
     android:id="@+id/myButton" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="ADD ELEMENTS" /> 
    <ListView 
     android:minWidth="25px" 
     android:minHeight="25px" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/listView" /> 
    <ListView 
     android:minWidth="25px" 
     android:minHeight="25px" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/listView3" /> 
    <ListView 
     android:minWidth="25px" 
     android:minHeight="25px" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/listView2" /> 
    <ListView 
     android:minWidth="25px" 
     android:minHeight="25px" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/listView1" /> 
</LinearLayout> 

Second.axml :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <TextView 
     android:text="SUBJECT" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/textView1" /> 
    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/editTextSubject" /> 
    <TextView 
     android:text="LECTURER" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/textView2" /> 
    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/editTextLecturer" /> 
    <TextView 
     android:text="DATE" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/textView3" /> 
    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/editTextDate" /> 
    <TextView 
     android:text="TYPE OF SUBJECT" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/textView4" /> 
    <Button 
     android:text="ADD A NEW EVENT" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/buttonAdd" /> 
</LinearLayout> 

List_item.axml : 당신이 convertView를 반환하는 ListArrayAdapter 클래스에서

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <TextView 
     android:text="Text" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/textViewSubject" /> 
    <TextView 
     android:text="Text" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/textViewLecturer" /> 
    <TextView 
     android:text="Text" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/textViewDate" /> 
    <TextView 
     android:text="Text" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/textViewType" /> 
</LinearLayout> 
+0

보기에 대해 추가 할 수 있습니까? – Sherlock

+0

@Sherlock 더 간단하게 말할 수 있습니까? – Vadim

+0

보기에 대해서도 XML을 볼 필요가 있습니다 – Sherlock

답변

2

. 이 변수는 변환 할 뷰가없는 경우 null입니다. 나는 그것이 (이 null없는 경우가 안드로이드에 추천으로 convertView는, 재사용) 조금 감독, 방법 내부의 전반적인 논리였다 바로 추측

public override View GetView(int position, View convertView, ViewGroup parent) 
{  
    View view = convertView; 
    //... your existing code 
    //return your view 
    return view; 
} 

: 당신은 당신의 view 변수를 반환해야합니다.

+0

정말 고마워요! – Vadim

+0

당신은 환영합니다 :-). 문제가 해결 된 경우 내 대답을 대답으로 표시하여 질문을 해결하십시오. –