user3291939
user3291939

Reputation: 39

NullPointerException while using a setter on fragment

I have been trying to debug this for a while and i am not able to figure out why i am getting the NullPointerException while trying to use the setter of an object on my fragment.

Fragment Code:

import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

public class ExerciseFragment extends ListFragment {

    private ExerciseDetails mExercise;
    private ArrayList<NewSet> mSets;
    private String mName;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.new_exercise_fragment, container,
                false);

        Bundle b = getArguments();
        mName = b.getString("NAME");
        mExercise.setName(mName);
        getActivity().setTitle(mName);
        ListView lv = (ListView) rootView.findViewById(android.R.id.list);



        return rootView;
    }


}

Class containing the setter i need to use:

import java.util.ArrayList;
import java.util.Date;

public class ExerciseDetails {


    private String mName;
    private Date mDate;
    private ArrayList<NewSet> mSets;

    public ExerciseDetails() {

        mName = "";
    }

    public String getName() {
        return mName;
    }

    public void setName(String name) {
        mName = name;
    }

    public Date getDate() {
        return mDate;
    }

    public void setDate(Date date) {
        mDate = date;
    }


    public ArrayList<NewSet> getSets() {
        return mSets;
    }

    public void setSets(ArrayList<NewSet> sets) {
        mSets = sets;
    }

}

This is the line that cuases the nullpointerexception:

mExercise.setName(mName);

The error trace:

12-08 23:34:27.610: E/AndroidRuntime(791): Process: com.test.project, PID: 791
12-08 23:34:27.610: E/AndroidRuntime(791): java.lang.NullPointerException
12-08 23:34:27.610: E/AndroidRuntime(791):  at com.test.project.ExerciseFragment.onCreateView(ExerciseFragment.java:33)
12-08 23:34:27.610: E/AndroidRuntime(791):  at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
12-08 23:34:27.610: E/AndroidRuntime(791):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
12-08 23:34:27.610: E/AndroidRuntime(791):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
12-08 23:34:27.610: E/AndroidRuntime(791):  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
12-08 23:34:27.610: E/AndroidRuntime(791):  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
12-08 23:34:27.610: E/AndroidRuntime(791):  at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
12-08 23:34:27.610: E/AndroidRuntime(791):  at android.os.Handler.handleCallback(Handler.java:733)
12-08 23:34:27.610: E/AndroidRuntime(791):  at android.os.Handler.dispatchMessage(Handler.java:95)
12-08 23:34:27.610: E/AndroidRuntime(791):  at android.os.Looper.loop(Looper.java:137)
12-08 23:34:27.610: E/AndroidRuntime(791):  at android.app.ActivityThread.main(ActivityThread.java:4998)
12-08 23:34:27.610: E/AndroidRuntime(791):  at java.lang.reflect.Method.invokeNative(Native Method)
12-08 23:34:27.610: E/AndroidRuntime(791):  at java.lang.reflect.Method.invoke(Method.java:515)
12-08 23:34:27.610: E/AndroidRuntime(791):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
12-08 23:34:27.610: E/AndroidRuntime(791):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
12-08 23:34:27.610: E/AndroidRuntime(791):  at dalvik.system.NativeStart.main(Native Method)

Upvotes: 0

Views: 6274

Answers (2)

M D
M D

Reputation: 47817

mExercise is NULL.

Initilaize it like

ExerciseDetails mExercise=new ExerciseDetails();

and then use

mExercise.setName(mName); 

Upvotes: 1

SweetWisher ツ
SweetWisher ツ

Reputation: 7306

mExercise is NULL. Initialize it with creating new object:

mExercise=new ExerciseDetails();
mExercise.setName(mName);

Upvotes: 3

Related Questions