I'm getting the error System.NullReferenceException: Object reference not set to an instance of an object
when I try to reference a TextView
from my fragment. It happens at runtime.
Fragment
public class Fragment1 : Fragment
{
private int checkNumber = 0;
private string[] updateTitleArray = new string[10];
private string[] updateBodyArray = new string[10];
private TextView updatesTitle0;
private TextView updatesTitle1;
private TextView updatesTitle2;
private TextView updatesTitle3;
private TextView updatesTitle4;
private TextView updatesTitle5;
private TextView updatesTitle6;
private TextView updatesTitle7;
private TextView updatesTitle8;
private TextView updatesTitle9;
private TextView updateBody0;
private TextView updateBody1;
private TextView updateBody2;
private TextView updateBody3;
private TextView updateBody4;
private TextView updateBody5;
private TextView updateBody6;
private TextView updateBody7;
private TextView updateBody8;
private TextView updateBody9;
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
fillUpdates(updateTitleArray, updateBodyArray);
}
public static Fragment1 NewInstance()
{
var frag1 = new Fragment1 { Arguments = new Bundle() };
return frag1;
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var ignored = base.OnCreateView(inflater, container, savedInstanceState);
return inflater.Inflate(Resource.Layout.fragment1, null);
}
public void fillUpdates(string[] updatetitlearray, string[] updatebodyarray)
{
//increment1 so if block skips here
checkNumber = 1;
//fill updatesArray
updateTitleArray = updatetitlearray;
updateBodyArray = updatebodyarray;
updatesTitle0 = View.FindViewById<TextView>(Resource.Id.update_title0);
updatesTitle1 = View.FindViewById<TextView>(Resource.Id.update_title1);
updatesTitle2 = View.FindViewById<TextView>(Resource.Id.update_title2);
updatesTitle3 = View.FindViewById<TextView>(Resource.Id.update_title3);
updatesTitle4 = View.FindViewById<TextView>(Resource.Id.update_title4);
updatesTitle5 = View.FindViewById<TextView>(Resource.Id.update_title5);
updatesTitle6 = View.FindViewById<TextView>(Resource.Id.update_title6);
updatesTitle7 = View.FindViewById<TextView>(Resource.Id.update_title7);
updatesTitle8 = View.FindViewById<TextView>(Resource.Id.update_title8);
updatesTitle9 = View.FindViewById<TextView>(Resource.Id.update_title9);
updateBody0 = View.FindViewById<TextView>(Resource.Id.update_body0);
updateBody1 = View.FindViewById<TextView>(Resource.Id.update_body1);
updateBody2 = View.FindViewById<TextView>(Resource.Id.update_body2);
updateBody3 = View.FindViewById<TextView>(Resource.Id.update_body3);
updateBody4 = View.FindViewById<TextView>(Resource.Id.update_body4);
updateBody5 = View.FindViewById<TextView>(Resource.Id.update_body5);
updateBody6 = View.FindViewById<TextView>(Resource.Id.update_body6);
updateBody7 = View.FindViewById<TextView>(Resource.Id.update_body7);
updateBody8 = View.FindViewById<TextView>(Resource.Id.update_body8);
updateBody9 = View.FindViewById<TextView>(Resource.Id.update_body9);
updatesTitle0.Text = updateTitleArray[0].ToString();
updatesTitle1.Text = updateTitleArray[1].ToString();
updatesTitle2.Text = updateTitleArray[2].ToString();
updatesTitle3.Text = updateTitleArray[3].ToString();
updatesTitle4.Text = updateTitleArray[4].ToString();
updatesTitle5.Text = updateTitleArray[5].ToString();
updatesTitle6.Text = updateTitleArray[6].ToString();
updatesTitle7.Text = updateTitleArray[7].ToString();
updatesTitle8.Text = updateTitleArray[8].ToString();
updatesTitle9.Text = updateTitleArray[9].ToString();
updateBody0.Text = updateBodyArray[0].ToString();
updateBody1.Text = updateBodyArray[1].ToString();
updateBody2.Text = updateBodyArray[2].ToString();
updateBody3.Text = updateBodyArray[3].ToString();
updateBody4.Text = updateBodyArray[4].ToString();
updateBody5.Text = updateBodyArray[5].ToString();
updateBody6.Text = updateBodyArray[6].ToString();
updateBody7.Text = updateBodyArray[7].ToString();
updateBody8.Text = updateBodyArray[8].ToString();
updateBody9.Text = updateBodyArray[9].ToString();
}
}
View
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp"
android:fillViewport="false">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!--Cardview 1-->
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="60dp"
card_view:cardElevation="8dp"
card_view:cardCornerRadius="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp">
<GridLayout
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
android:rowCount="1">
<LinearLayout
android:orientation="vertical"
android:layout_gravity="fill"
android:layout_row="0"
android:layout_column="0"
android:padding="16sp">
<TextView
android:id="@+id/update_title0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update 1"
android:padding="4sp"
android:textSize="24sp"
android:textColor="@color/primaryText" />
<TextView
android:id="@+id/update_body0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update Details Is Shownbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb Here"
android:padding="4sp"
android:textSize="16sp" />
</LinearLayout>
</GridLayout>
</android.support.v7.widget.CardView>
<!--card view2-->
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardElevation="8dp"
card_view:cardCornerRadius="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp">
<GridLayout
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
android:rowCount="1">
<LinearLayout
android:orientation="vertical"
android:layout_gravity="fill"
android:layout_row="0"
android:layout_column="0"
android:padding="16sp">
<TextView
android:id="@+id/update_title1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update 1"
android:padding="4sp"
android:textSize="24sp"
android:textColor="@color/primaryText" />
<TextView
android:id="@+id/update_body1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update Details Is Shown Here"
android:padding="4sp"
android:textSize="16sp" />
</LinearLayout>
</GridLayout>
</android.support.v7.widget.CardView>
<!--cardview 3-->
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardElevation="8dp"
card_view:cardCornerRadius="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp">
<GridLayout
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
android:rowCount="1">
<LinearLayout
android:orientation="vertical"
android:layout_gravity="fill"
android:layout_row="0"
android:layout_column="0"
android:padding="16sp">
<TextView
android:id="@+id/update_title2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update 1"
android:padding="4sp"
android:textSize="24sp"
android:textColor="@color/primaryText" />
<TextView
android:id="@+id/update_body2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update Details Is Shown Here"
android:padding="4sp"
android:textSize="16sp" />
</LinearLayout>
</GridLayout>
</android.support.v7.widget.CardView>
<!--card view 4-->
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardElevation="8dp"
card_view:cardCornerRadius="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp">
<GridLayout
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
android:rowCount="1">
<LinearLayout
android:orientation="vertical"
android:layout_gravity="fill"
android:layout_row="0"
android:layout_column="0"
android:padding="16sp">
<TextView
android:id="@+id/update_title3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update 1"
android:padding="4sp"
android:textSize="24sp"
android:textColor="@color/primaryText" />
<TextView
android:id="@+id/update_body3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update Details Is Shown Here"
android:padding="4sp"
android:textSize="16sp" />
</LinearLayout>
</GridLayout>
</android.support.v7.widget.CardView>
<!--card view 5-->
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardElevation="8dp"
card_view:cardCornerRadius="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp">
<GridLayout
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
android:rowCount="1">
<LinearLayout
android:orientation="vertical"
android:layout_gravity="fill"
android:layout_row="0"
android:layout_column="0"
android:padding="16sp">
<TextView
android:id="@+id/update_title4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update 1"
android:padding="4sp"
android:textSize="24sp"
android:textColor="@color/primaryText" />
<TextView
android:id="@+id/update_body4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update Details Is Shown Here"
android:padding="4sp"
android:textSize="16sp" />
</LinearLayout>
</GridLayout>
</android.support.v7.widget.CardView>
<!--card view 6-->
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardElevation="8dp"
card_view:cardCornerRadius="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp">
<GridLayout
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
android:rowCount="1">
<LinearLayout
android:orientation="vertical"
android:layout_gravity="fill"
android:layout_row="0"
android:layout_column="0"
android:padding="16sp">
<TextView
android:id="@+id/update_title5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update 1"
android:padding="4sp"
android:textSize="24sp"
android:textColor="@color/primaryText" />
<TextView
android:id="@+id/update_body5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update Details Is Shown Here"
android:padding="4sp"
android:textSize="16sp" />
</LinearLayout>
</GridLayout>
</android.support.v7.widget.CardView>
<!--card view 7-->
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardElevation="8dp"
card_view:cardCornerRadius="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp">
<GridLayout
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
android:rowCount="1">
<LinearLayout
android:orientation="vertical"
android:layout_gravity="fill"
android:layout_row="0"
android:layout_column="0"
android:padding="16sp">
<TextView
android:id="@+id/update_title6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update 1"
android:padding="4sp"
android:textSize="24sp"
android:textColor="@color/primaryText" />
<TextView
android:id="@+id/update_body6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update Details Is Shown Here"
android:padding="4sp"
android:textSize="16sp" />
</LinearLayout>
</GridLayout>
</android.support.v7.widget.CardView>
<!--card view 8-->
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardElevation="8dp"
card_view:cardCornerRadius="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp">
<GridLayout
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
android:rowCount="1">
<LinearLayout
android:orientation="vertical"
android:layout_gravity="fill"
android:layout_row="0"
android:layout_column="0"
android:padding="16sp">
<TextView
android:id="@+id/update_title7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update 1"
android:padding="4sp"
android:textSize="24sp"
android:textColor="@color/primaryText" />
<TextView
android:id="@+id/update_body7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update Details Is Shown Here"
android:padding="4sp"
android:textSize="16sp" />
</LinearLayout>
</GridLayout>
</android.support.v7.widget.CardView>
<!--card view 9-->
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardElevation="8dp"
card_view:cardCornerRadius="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp">
<GridLayout
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
android:rowCount="1">
<LinearLayout
android:orientation="vertical"
android:layout_gravity="fill"
android:layout_row="0"
android:layout_column="0"
android:padding="16sp">
<TextView
android:id="@+id/update_title8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update 1"
android:padding="4sp"
android:textSize="24sp"
android:textColor="@color/primaryText" />
<TextView
android:id="@+id/update_body8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update Details Is Shown Here"
android:padding="4sp"
android:textSize="16sp" />
</LinearLayout>
</GridLayout>
</android.support.v7.widget.CardView>
<!--card view 10-->
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardElevation="8dp"
card_view:cardCornerRadius="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp">
<GridLayout
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
android:rowCount="1">
<LinearLayout
android:orientation="vertical"
android:layout_gravity="fill"
android:layout_row="0"
android:layout_column="0"
android:padding="16sp">
<TextView
android:id="@+id/update_title9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update 1"
android:padding="4sp"
android:textSize="24sp"
android:textColor="@color/primaryText" />
<TextView
android:id="@+id/update_body9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update Details Is Shown Here"
android:padding="4sp"
android:textSize="16sp" />
</LinearLayout>
</GridLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
</ScrollView>
I understand that what I am trying to achieve can be implemented with recycler views but I haven't fully understood that, because I am a beginner programmer.
You are calling you function too early. OnCreate
gets called before OnCreateView
. That means, that your views haven't been created, when you try to access the layout components. You have to move your call of fillUpdates
to OnStart
(or OnCreateView
or another lifecycle method that gets called after OnCreateView).
Have a look at the Frament Lifecycle
public override void OnStart(Bundle bundle)
{
base.OnStart(bundle);
fillUpdates(updateTitleArray, updateBodyArray);
}