这是我的解决方案:
我创建了一个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()方法。根据使用情况,会有其他需要特殊处理的方法,但概念应该清楚。