[英]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. 我已经尝试调试了一段时间,但我无法弄清为什么在尝试在片段上使用对象的setter时出现NullPointerException的原因。
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: 包含setter的类,我需要使用:
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: 这是引起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)
mExercise is NULL . mExercise为NULL 。 Initialize it with creating new object: 通过创建新对象对其进行初始化:
mExercise=new ExerciseDetails();
mExercise.setName(mName);
mExercise is NULL. mExercise为NULL。
Initilaize it like 像这样初始化
ExerciseDetails mExercise=new ExerciseDetails();
and then use 然后使用
mExercise.setName(mName);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.