[英]NullPointerException setting adapter in ListFragment
我已經在這里待了12個多小時,所以也許stackoverflow可以為我提供幫助。
在我的MainActivity
,有3個片段從側面導航抽屜加載。 在我的一個片段中,我有一個ListView ,我試圖用ArrayAdapter
設置它並從data.xml
接收信息。
發生錯誤的片段類:
public static class SongsFragment extends ListFragment {
private static final String ARG_SECTION_NUMBER = "section_number";
public SongsFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onActivityCreated(Bundle b){
super.onActivityCreated(b);
//AlbumAdapt loadAlbums = new AlbumAdapt(this.getView(), this.getActivity());
ListView listView = (ListView) getView().findViewById(R.layout.fragment_item_list);
List<AlbumModel> albums = null;
try {
XMLData parser = new XMLData();
albums = parser.parse(getActivity().getAssets().open("data.xml"));
ArrayAdapter<AlbumModel> adapter =
new ArrayAdapter<AlbumModel>(getActivity(), R.layout.list_item, albums);
listView.setAdapter(adapter);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
((MainActivity) activity).onSectionAttached(
getArguments().getInt(ARG_SECTION_NUMBER));
}
@Override
public void onDetach() {
super.onDetach();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_item_list, container, false);
}
public static SongsFragment newInstance(int sectionNumber) {
SongsFragment fragment = new SongsFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
}
Logcat看起來很清楚:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.markbratanov.myfitplayer/com.markbratanov.myfitplayer.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.markbratanov.myfitplayer.MainActivity$SongsFragment.onActivityCreated(MainActivity.java:235)
at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1508)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:570)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
at android.app.Activity.performStart(Activity.java:5241)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
整個項目都托管在github上,用於類引用等: https : //github.com/markbratanov/MyFitPlayer/tree/master/Player/src/main/java/com/markbratanov/myfitplayer
任何指導/意見將不勝感激...我已經嘗試了很多,而我想要做的就是讓此Listview正常工作,以便我繼續前進。
您需要使用R.id.viewid
。 由於你有一個ListFragment
你有
ListView listView = (ListView) getView().findViewById(R.layout.fragment_item_list);
應該
ListView listView = getListView();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.