-2
我是Android應用程序開發新手。我正在創建一個簡單的音樂應用程序,它可以從用戶的外部存儲中獲取歌曲並播放它。 我爲此使用碎片。創建簡單音樂應用程序
這是我SongList.class代碼============================
package com.android.jarvis.easysplay;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.Nullable;
import android.support.annotation.StringDef;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Devil on 5/17/2017.
*/
public class SongsList extends android.support.v4.app.Fragment {
ListView lv;
String items;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
lv =(ListView) getView().findViewById(R.id.lvPlaylist);
ArrayList<File> mySongs = findSongs(Environment.getExternalStorageDirectory());
for(int i=0; i<mySongs.size(); i++){
toast(mySongs.get(i).getName().toString());
}
return inflater.inflate(R.layout.songs_list, container, false);
}
public ArrayList<File> findSongs(File root){
ArrayList<File> al = new ArrayList<>();
File[] files = root.listFiles();
for(File singleFile:files){
if(singleFile.isDirectory() && !singleFile.isHidden()){
al.addAll(findSongs(singleFile));
}else {
if(singleFile.getName().endsWith(".mp3") || singleFile.getName().endsWith(".wav")){
al.add(singleFile);
}
}
}
return al;
}
public void toast(String text){
Toast.makeText(getActivity(), text, Toast.LENGTH_SHORT).show();
}
}
當我開始這個它顯示以下錯誤。我不知道該怎麼知道什麼
05-18 21:58:56.747 18725-18725/com.android.jarvis.easysplay E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.android.jarvis.easysplay, PID: 18725
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
at com.android.jarvis.easysplay.SongsList.onCreateView(SongsList.java:32)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2013)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:710)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5643)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
它再次 –
正是同樣的原因出在同一行同樣的錯誤? '嘗試調用空對象引用虛擬方法'android.view.View android.view.View.findViewById(int)'? –
是的:(。** java.lang.NullPointerException:試圖調用虛擬方法'android.view.View android.view.View.findViewById(int)'對空引用** –