我导入了库[1]:https://github.com/shontauro/android-pulltorefresh-and-loadmore
示例类正在扩展ListActivity
并且一切正常。
我在extends ListFragment
上进行了重新设置,但发生错误。
public class SurveyGuestsList extends ListFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.loadmore, null);
arrayList = new ArrayList<SurveyGuestsListBean>();
context = getActivity();
new LoadDataTask().execute();
// set a listener to be invoked when the list reaches the end
((LoadMoreListView) getListView())
.setOnLoadMoreListener(new OnLoadMoreListener() {
public void onLoadMore() {
// Do the work to load more items at the end of list
// here
new LoadDataTask().execute();
}
});
return v;
}
ERROR:
11-18 07:34:10.508 1777-1777/com.example.MANAGMENT E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.IllegalStateException: Content view not yet created
at android.support.v4.app.ListFragment.ensureList(ListFragment.java:328)
at android.support.v4.app.ListFragment.getListView(ListFragment.java:222)
at com.example.MANAGMENT.fragments.SurveyGuestsList.onCreateView(SurveyGuestsList.java:50)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
EDITE: 我在这里移动了代码并且它工作了!!!
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
((LoadMoreListView) getListView())
.setOnLoadMoreListener(new OnLoadMoreListener() {
public void onLoadMore() {
// Do the work to load more items at the end of list here
new LoadDataTask().execute();
}
});
super.onViewCreated(view, savedInstanceState);
}
答案 0 :(得分:3)
碎片和活动有不同的生命周期和回调。对于片段,onCreateView用于创建视图,它不会附加到视图层次结构,直到您返回v
,因此您无法在其中调用getListView
。只需创建并返回您的视图,如下所示。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.loadmore, null);
return v;
}
将其余代码移至onViewCreated()
或稍后回调。
答案 1 :(得分:1)
在onCreateView
中使用getListView()
。请参阅getListView()
返回onCreateView
创建的视图。所以,你试图在onCreateView()
返回之前使用它。因此错误'Content view is not yet created'.
尝试在v
getListView()
代替onCreateView()
((LoadMoreListView)v).setonLoadMoreListener(...);