Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NullPointerException in oncreateView() of Fragment

This code below shows part of activity where the fragment is added.


    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.fragment_container, srkt_frag);
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    ft.commit();

    TabSpec specs1=mTab.newTabSpec("tag1");
    specs1.setContent(R.id.fragment_container);
    specs1.setIndicator("SRK/T");
    mTab.addTab(specs1);

mTab is TabHost where the srkt_frag is displayed as the content. the fragment class is shown below


public class Srkt_x extends Fragment 
{
    @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            View view=inflater.inflate(R.layout.activity_srkt_x,container,false);
            TextView text = (TextView) getView().findViewById(R.id.srkt_power);
            Float result=getArguments().getFloat("RESULT");
            text.setText(String.valueOf(result));
            return view;

        }

}

after executing the project i get nullpointerexception at line 21 i.e at

TextView text = (TextView) getView().findViewById(R.id.srkt_power);

my xml file is shown below


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"

tools:context=".Srkt_x" >

<ScrollView
    android:id="@+id/srkt_scrollView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:background="@color/Black" >

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

        <TextView
            android:id="@+id/srkt_power"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/iolpower"
            android:layout_toRightOf="@+id/iolpower"
            android:clickable="false"
            android:ems="10"
            android:enabled="false"
            android:fadingEdge="horizontal"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:gravity="center|left"
            android:longClickable="false"
            android:paddingTop="10dp"
            android:textColor="@color/DeepSkyBlue"
            android:textSize="15sp" />

        <TextView
            android:id="@+id/iolpower"
            android:layout_width="100dp"
            android:layout_height="30dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="20dp"
            android:gravity="bottom|center"
            android:textColor="@color/White"
            android:inputType="text"
            android:text="@string/power"
            android:textSize="20sp"
            android:visibility="visible" />

        <TableLayout
            android:layout_width="228dp"
            android:layout_height="match_parent"
            android:layout_below="@+id/srkt_power"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="33dp"
            android:paddingTop="10dp" >

            <TableRow
                android:id="@+id/srkttableRow1"
                android:layout_height="wrap_content"
                android:background="@color/SkyBlue"
                android:orientation="vertical"
                android:showDividers="middle" >

                <TextView
                    android:id="@+id/iolCol"
                    android:layout_height="wrap_content"
                    android:layout_gravity="left"
                    android:layout_weight="1"
                    android:background="@color/SkyBlue"
                    android:gravity="center"
                    android:text="@string/iol"
                    android:textColor="@color/White"
                    android:textSize="20sp" />

                <TextView
                    android:id="@+id/refCol"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:layout_weight="1"
                    android:background="@color/SkyBlue"
                    android:gravity="center"
                    android:text="@string/refr"
                    android:textColor="@color/White"
                    android:textSize="20sp" />
            </TableRow>

            <TableRow
                android:id="@+id/srkttableRow2"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/Black" >

                <TextView
                    android:id="@+id/srktrnd2"
                    android:layout_gravity="left|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/srktref2"
                    android:layout_gravity="right|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />
            </TableRow>

            <TableRow
                android:id="@+id/srkttableRow3"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/Black" >

                <TextView
                    android:id="@+id/srktrnd3"
                    android:layout_gravity="left|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/srktref3"
                    android:layout_gravity="right|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />
            </TableRow>

            <TableRow
                android:id="@+id/srkttableRow4"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/Black" >

                <TextView
                    android:id="@+id/srktrnd4"
                    android:layout_gravity="left|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/srktref4"
                    android:layout_gravity="right|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />
            </TableRow>

            <TableRow
                android:id="@+id/srkttableRow5"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/Black" >

                <TextView
                    android:id="@+id/srktrnd5"
                    android:layout_gravity="left|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/srktref5"
                    android:layout_gravity="right|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />
            </TableRow>

            <TableRow
                android:id="@+id/srkttableRow6"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/Black" >

                <TextView
                    android:id="@+id/srktrnd6"
                    android:layout_gravity="left|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/srktref6"
                    android:layout_gravity="right|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />
            </TableRow>

            <TableRow
                android:id="@+id/srkttableRow7"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/Black" >

                <TextView
                    android:id="@+id/srktrnd7"
                    android:layout_gravity="left|center"
                    android:layout_weight="1"
                    android:background="@color/DeepSkyBlue"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/srktref7"
                    android:layout_gravity="right|center"
                    android:layout_weight="1"
                    android:background="@color/DeepSkyBlue"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />
            </TableRow>

            <TableRow
                android:id="@+id/srkttableRow8"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/Black" >

                <TextView
                    android:id="@+id/srktrnd8"
                    android:layout_gravity="left|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/srktref8"
                    android:layout_gravity="right|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />
            </TableRow>

            <TableRow
                android:id="@+id/srkttableRow9"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/Black" >

                <TextView
                    android:id="@+id/srktrnd9"
                    android:layout_gravity="left|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/srktref9"
                    android:layout_gravity="right|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />
            </TableRow>

            <TableRow
                android:id="@+id/srkttableRow10"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/Black" >

                <TextView
                    android:id="@+id/srktrnd10"
                    android:layout_gravity="left|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/srktref10"
                    android:layout_gravity="right|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />
            </TableRow>

            <TableRow
                android:id="@+id/srkttableRow11"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/Black" >

                <TextView
                    android:id="@+id/srktrnd11"
                    android:layout_gravity="left|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/srktref11"
                    android:layout_gravity="right|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />
            </TableRow>

            <TableRow
                android:id="@+id/srkttableRow12"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/Black" >

                <TextView
                    android:id="@+id/srktrnd12"
                    android:layout_gravity="left|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />

                <TextView
                    android:id="@+id/srktref12"
                    android:layout_gravity="right|center"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:textColor="@color/White"
                    android:textSize="15sp" />
            </TableRow>
        </TableLayout>

    </RelativeLayout>
</ScrollView>


the log file is shown below


   03-26 23:49:22.333: D/AndroidRuntime(497): Shutting down VM
03-26 23:49:22.333: W/dalvikvm(497): threadid=1: thread exiting with uncaught exception (group=0x40015560)
03-26 23:49:22.353: E/AndroidRuntime(497): FATAL EXCEPTION: main
03-26 23:49:22.353: E/AndroidRuntime(497): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.iolcalci/com.example.iolcalci.Menu}: java.lang.NullPointerException
03-26 23:49:22.353: E/AndroidRuntime(497):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
03-26 23:49:22.353: E/AndroidRuntime(497):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-26 23:49:22.353: E/AndroidRuntime(497):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-26 23:49:22.353: E/AndroidRuntime(497):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-26 23:49:22.353: E/AndroidRuntime(497):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-26 23:49:22.353: E/AndroidRuntime(497):  at android.os.Looper.loop(Looper.java:123)
03-26 23:49:22.353: E/AndroidRuntime(497):  at android.app.ActivityThread.main(ActivityThread.java:3683)
03-26 23:49:22.353: E/AndroidRuntime(497):  at java.lang.reflect.Method.invokeNative(Native Method)
03-26 23:49:22.353: E/AndroidRuntime(497):  at java.lang.reflect.Method.invoke(Method.java:507)
03-26 23:49:22.353: E/AndroidRuntime(497):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-26 23:49:22.353: E/AndroidRuntime(497):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-26 23:49:22.353: E/AndroidRuntime(497):  at dalvik.system.NativeStart.main(Native Method)
03-26 23:49:22.353: E/AndroidRuntime(497): Caused by: java.lang.NullPointerException
03-26 23:49:22.353: E/AndroidRuntime(497):  at com.example.iolcalci.Srkt_x.onCreateView(Srkt_x.java:21)
03-26 23:49:22.353: E/AndroidRuntime(497):  at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
03-26 23:49:22.353: E/AndroidRuntime(497):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
03-26 23:49:22.353: E/AndroidRuntime(497):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
03-26 23:49:22.353: E/AndroidRuntime(497):  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
03-26 23:49:22.353: E/AndroidRuntime(497):  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
03-26 23:49:22.353: E/AndroidRuntime(497):  at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:551)
03-26 23:49:22.353: E/AndroidRuntime(497):  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129)
03-26 23:49:22.353: E/AndroidRuntime(497):  at android.app.Activity.performStart(Activity.java:3791)
03-26 23:49:22.353: E/AndroidRuntime(497):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1620)
03-26 23:49:22.353: E/AndroidRuntime(497):  ... 11 more

I am not able to figure out the problem .any solution?

EDIT : line 22:Float result=getArguments().getFloat("RESULT");

EDIT 2 : setting arguments as shown below:

IOLPower_srkt=Srkt();

                Bundle srkt_bundle=new Bundle();
                srkt_bundle.putFloat("RESULT", IOLPower_srkt);

                srkt_frag.setArguments(srkt_bundle);

here Srkt() returns float value check detailed code


IOLPower_srkt=Srkt();
            Bundle srkt_bundle=new Bundle();
            srkt_bundle.putFloat("RESULT", IOLPower_srkt);
            srkt_frag.setArguments(srkt_bundle);



            IOLPower_bink=Binkhorst();
            Bundle bink_bundle=new Bundle();
            bink_bundle.putFloat("RESULT", IOLPower_bink);
            bink_frag.setArguments(bink_bundle);


            IOLPower_srk2=Srk2();
            if((Math.ceil(IOLPower_srk2)-IOLPower_srk2)>0.5){
                srk2_rnd=(float) Math.floor(IOLPower_srk2);
            }else{
                srk2_rnd=(float) Math.ceil(IOLPower_srk2);
            }
            Bundle srk2_bundle=new Bundle();
            srk2_bundle.putFloat("RESULT", srk2_rnd);
            srk2_frag.setArguments(srk2_bundle);



            IOLPower_holl=Holladay();
            Bundle holl_bundle=new Bundle();
            holl_bundle.putFloat("RESULT", IOLPower_holl);
            holl_frag.setArguments(holl_bundle);

        }
            });

    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.fragment_container, srkt_frag);
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    ft.commit();

    TabSpec specs1=mTab.newTabSpec("tag1");
    specs1.setContent(R.id.fragment_container);
    specs1.setIndicator("SRK/T");
    mTab.addTab(specs1);


    TabSpec specs2=mTab.newTabSpec("tag2");
    specs2.setContent(R.id.fragment_container);
    specs2.setIndicator("SRK II");
    mTab.addTab(specs2);


    TabSpec specs3=mTab.newTabSpec("tag3");
    specs3.setContent(R.id.fragment_container);
    specs3.setIndicator("HOLLADAY");
    mTab.addTab(specs3);


    TabSpec specs4=mTab.newTabSpec("tag4");
    specs4.setContent(R.id.fragment_container);
    specs4.setIndicator("BINKHORST");
    mTab.addTab(specs4);

like image 291
human Avatar asked Mar 26 '13 18:03

human


4 Answers

How to solve: the clue of your log is Caused by: java.lang.NullPointerException at com.example.iolcalci.Srkt_x.onCreateView(Srkt_x.java:21)

which says that there is a Null Pointer Exception at Srkt_x.java line 21 so go to line 21 and see which of the values is equal to null and throw the exception.

The problem with your code is with TextView text = (TextView) getView().findViewById(R.id.srkt_power); where getView() is null as it has not been created.

The right code is:

public class Srkt_x extends Fragment 
{
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.activity_srkt_x,container,false);

        // use view instead of getView()
        TextView text = (TextView) view.findViewById(R.id.srkt_power);
        if(getArguments() != null) {
            Float result=getArguments().getFloat("RESULT");
            text.setText(String.valueOf(result));
        } else {
            text.setText("result not included");
        }
        return view;

    }

}

you have to use the inflated view in order to get the wanted TextView by id.

At the end of onCreateView when the return view; is executed, getView() will return the view value instead of null.


As suggested in the Android documentation page for Fragment, see TitlesFragment and DetailsFragment, use something like the code below in order to set arguments

public static Srkt_x newInstance(Float result) {
    Srkt_x f = new Srkt_x ();

    // Supply index input as an argument.
    Bundle args = new Bundle();
    args.putFloat("RESULT", result);
    f.setArguments(args);

    return f;
}
like image 140
madlymad Avatar answered Nov 19 '22 18:11

madlymad


Instead of getView() use the view that you just inflated, since the view is not returned yet you will get a NPE Maybe like this:

View view=inflater.inflate(R.layout.activity_srkt_x,container,false);
TextView text = (TextView) view.findViewById(R.id.srkt_power);

//*** do something***

return view;
like image 40
Parvaz Bhaskar Avatar answered Nov 19 '22 17:11

Parvaz Bhaskar


Replace

TextView text = (TextView) getView().findViewById(R.id.srkt_power);

with

TextView text = (TextView) getActivity().findViewById(R.id.srkt_power);
like image 3
TronicZomB Avatar answered Nov 19 '22 18:11

TronicZomB


The reason for your bug and confusion is due to not understanding how the Android event loop works.

You are calling getView() at a time when the fragment does not yet have one. The fragment will only have a view after onCreateView finishes running. The point of onCreateView is "to have the fragment instantiate its user interface view".

You should do getActivity().findViewById.

like image 1
yarian Avatar answered Nov 19 '22 17:11

yarian