我有两个片段,MyFirst 片段和 MySecond 片段。MySecond 片段从 MyFirst 片段扩展而来。
分类是这样的:
public class MyFirstFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
...
// Check view and map, request to recreate if each of them is null
if(MyFirstFragment.this.getView() == null || googleMap == null) {
Toast.makeText(getActivity().getApplicationContext(), R.string.my_message, Toast.LENGTH_LONG).show();
return;
}
}
}
public class MySecondFragment extends MyFirstFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
...
}
}
我的问题在于super.onActivityCreated(savedInstanceState);
MySecondFragment 的 onActivityCreated() 方法调用它的超级。因为我想在超类中隐藏这个方法的功能(这对这个片段没有用),所以我在 MySecondFragment 中添加了 onActivityCreated() 方法。
问题是,如果我删除了这一行,那么我会遇到抛出“SuperNotCalledException”的运行时错误。
你认为呢?似乎我必须扩展 Fragment 类而不是扩展 MyFirstFragment。我在 MyFirstFragment 中有一些变量,我在 MySecondFragment 中需要它们。