Search code examples
javaandroidandroid-studioandroid-preferences

Void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference


On the beginning - i tried all solutions.

Here is the error:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
                  at com.justfashion.ActivityMainWallet.onCreate(ActivityMainWallet.java:211)`

ActivityMainWallet.java:210-212 lines:

TextView navigationTotalCreditTextView = (TextView)mDrawerLay.findViewById(R.id.nav_drawer_total_credits);
    navigationTotalCreditTextView.setText("Total Credits: " + PreferenceConnector.readInteger(aiContext,
            PreferenceConnector.WALLETPOINTS,""));

XML:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff" >

    <TextView
        android:id="@+id/nav_drawer_wallet_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:gravity="center"
        android:textColor="@color/md_white_1000"
        android:textSize="@dimen/twentyfive" />
    <TextView
        android:id="@+id/nav_drawer_total_credits"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:textColor="@color/md_white_1000"
        android:textSize="@dimen/twentyfive" />
    <TextView
        android:id="@+id/nav_drawer_username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:gravity="center"
        android:textColor="@color/md_white_1000"
        android:textSize="@dimen/twentyfive" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <RelativeLayout android:id="@+id/content_frame_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#ffffff"
            android:layout_below="@+id/toolbar_app_bar_layout">

            <FrameLayout
                android:id="@+id/content_frame"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
            </FrameLayout>

        </RelativeLayout>

        <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/toolbar_app_bar_layout" />

        <android.support.design.widget.AppBarLayout
            android:id="@+id/toolbar_app_bar_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

            <include android:id="@+id/toolbar"
                layout="@layout/toolbar" />

            <android.support.design.widget.TabLayout
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:id="@+id/sliding_tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/toolbar"
                app:tabMode="scrollable"
                app:paddingStart="16dp"
                app:tabPaddingStart="16dp"
                app:tabPaddingEnd="16dp"
                app:tabMinWidth="96dp"
                app:tabGravity="center" />

        </android.support.design.widget.AppBarLayout>

    </RelativeLayout>

    <android.support.design.widget.NavigationView
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/navigation_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="start"
        android:background="@color/md_white_1000"
        app:headerLayout="@layout/nav_drawer_header"
        app:menu="@menu/menu_drawer"
        app:itemTextAppearance="@style/TextAppearance.AppCompat.Menu"
        android:clipToPadding="false">

        <!--<FrameLayout-->
            <!--android:layout_width="match_parent"-->
            <!--android:layout_height="wrap_content"-->
            <!--android:layout_gravity="bottom"-->
            <!--android:background="@color/md_white_1000"-->
            <!--android:elevation="4dp"-->
            <!--android:layout_marginBottom="-96dp">-->

            <!--<Button android:id="@+id/navigation_button_footer"-->
                <!--android:layout_width="match_parent"-->
                <!--android:layout_height="match_parent"-->
                <!--android:text=""-->
                <!--android:textSize="13sp"-->
                <!--android:textColor="@color/md_grey_800"-->
                <!--android:lines="3"-->
                <!--android:gravity="center"-->
                <!--style="@style/Widget.AppCompat.ActionButton"-->
                <!--android:paddingTop="20dp"-->
                <!--android:paddingLeft="20dp"-->
                <!--android:paddingRight="20dp"-->
                <!--android:paddingBottom="20dp"/>-->

        <!--</FrameLayout>-->

    </android.support.design.widget.NavigationView>

    <RelativeLayout
        android:id="@+id/lay_connection"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="@dimen/actmain_margintop"
        android:background="#3c3c3c"
        android:visibility="gone" >

        <TextView
            android:id="@+id/text_error"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:gravity="center"
            android:text="@string/error_no_internet"
            android:textColor="@color/md_white_1000"
            android:textSize="@dimen/twentyfive" />


        <RelativeLayout
            android:id="@+id/lay_dialog"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="gone" >

            <ProgressBar
                android:id="@+id/progressBar1"
                style="?android:attr/progressBarStyleLarge"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true" />

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/progressBar1"
                android:layout_centerHorizontal="true"
                android:text="@string/error_no_internet"
                android:textColor="@color/md_white_1000"
                android:textSize="@dimen/twentyfive" />
        </RelativeLayout>
    </RelativeLayout>

</android.support.v4.widget.DrawerLayout>

I tried everything. Is it a problem with PreferenceConnector? Here is PreferenceConnector.WALLETPOINTS,"")) in PreferenceConnection.java:

public static final String  WALLETPOINTS            = "walletpoints";

Help guys please! I tried every solution, but noone has got this error with PreferanceConnector.

#EDIT

Solved, but now i'm getting this error:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.Toolbar.setTitle(java.lang.CharSeq‌​uence)' on a null object reference at com.justfashion.ActivityMainWallet.onCreate(ActivityMainWall‌​et.java:251)

Solution

  • The problem is that you are searching for TextView in wrong View.

    You did this :

    TextView navigationTotalCreditTextView = (TextView)mDrawerLay.findViewById(R.id.nav_drawer_total_credits);
    

    But the text view is in mDrawerLayout. see below and also your xml.

    mDrawerLayout   = (DrawerLayout)findViewById(R.id.drawer_layout);
    mDrawerLay      = (NavigationView)findViewById(R.id.navigation_view);
    

    to fix the problem do this :

    TextView navigationTotalCreditTextView = (TextView)mDrawerLayout.findViewById(R.id.nav_drawer_total_credits);