这是我的解决方案:
我创建了一个Fragment
包含我的 SherlockFragment 的原生程序。
public class HelperFragment extends ListFragment {
MyFragment cp;
public HelperFragment() {
cp = new MyFragment();
}
}
覆盖的呼叫onCreateView()
需要转发,但有些需要特殊处理。而不是getActivity()
inMyFragment
我使用了以下构造:
private Activity activity;
@Override
public void onAttach(final Activity activity) {
this.activity = activity;
super.onAttach(activity);
}
@Override
public void onDetach() {
super.onDetach();
activity = null;
}
public void setActivity(final Activity activity) {
this.activity = activity;
}
当HelperFragment
它被连接和分离时调用setter,如果它MyFragment
以通常的方式被连接,它像往常一样工作。
在我的情况下,这HelperFragment
也是需要重定向的ListFragment
调用。getListView()
我通过覆盖解决了getListView()
它MyFragment
:
private ListView listView;
@Override
public ListView getListView() {
if (listView != null) {
return listView;
} else {
return super.getListView();
}
}
public void setListView(final ListView listView) {
this.listView = listView;
}
并调用setListView()
inHelperFragment
的onActivityCreated()
方法。根据使用情况,会有其他需要特殊处理的方法,但概念应该清楚。