android - 片段中的单选按钮导致崩溃
android - Radio Buttons in a Fragment causing crash
片段启动时崩溃。可以在单选按钮代码中吗?
RadioGroup q1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
q1 = (RadioGroup) getView().findViewById(R.id.radioGQ1);
q1.setOnCheckedChangeListener(this);
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_exercise, container, false);
}
rest -> http://pastebin.com/cRptSmD4
您需要先膨胀视图。
View root = inflater.inflate(R.layout.fragment_exercise, container, false);
q1 = (RadioGroup) root.findViewById(R.id.radioGQ1);
q1.setOnCheckedChangeListener(this);
return root;
getView()
returns null,直到您从 onCreateView()
返回视图层次结构,因此您不应在该方法中调用 getView()
。
Fragment
的Context
为getActivity
,如果不初始化任何视图,则使用getActivity()
。所以在你的代码中:
替换为:
q1 = (RadioGroup) getView().findViewById(R.id.radioGQ1);
使用此代码:
q1 = (RadioGroup) getActivity().findViewById(R.id.radioGQ1);
片段启动时崩溃。可以在单选按钮代码中吗?
RadioGroup q1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
q1 = (RadioGroup) getView().findViewById(R.id.radioGQ1);
q1.setOnCheckedChangeListener(this);
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_exercise, container, false);
}
rest -> http://pastebin.com/cRptSmD4
您需要先膨胀视图。
View root = inflater.inflate(R.layout.fragment_exercise, container, false);
q1 = (RadioGroup) root.findViewById(R.id.radioGQ1);
q1.setOnCheckedChangeListener(this);
return root;
getView()
returns null,直到您从 onCreateView()
返回视图层次结构,因此您不应在该方法中调用 getView()
。
Fragment
的Context
为getActivity
,如果不初始化任何视图,则使用getActivity()
。所以在你的代码中:
替换为:
q1 = (RadioGroup) getView().findViewById(R.id.radioGQ1);
使用此代码:
q1 = (RadioGroup) getActivity().findViewById(R.id.radioGQ1);