私はsdCardからサウンドをロードし、それをAlertDialogにlist
. 完璧なサウンドをロードして再生します。ここで、ロードするサウンドの量を制限したいと思いますlist
。したがって、ここにタスクがあります:
sdCard のフォルダに N 個のサウンドがあります。条件に基づいて表示したい音の量のリストがあります。条件は次のとおりです: condition1>6 and condition2<40 の場合は false で、リストに 6 つのサウンドが表示されます。そうでない場合は、条件が true の場合、リストにすべてのサウンドが表示されます。
コードに実装する方法は次のとおりですが、NullPointerException
.
ins_mp3List = ins_Dir.listFiles(new Mp3Filter()); //list of all sounds in directory(N)
user_instruments = new String[ins_mp3List.length]; //will be used in a system internally
user_instruments_toShow =new String[ins_mp3List.length]; //will be shown in the list
soundsQ_check=Integer.valueOf(custom_sounds.getString("RAW_1_1", ""));// the value is 0, it is checked
//Condition
if (ins_mp3List.length>6 && soundsQ_check<40){
user_instruments_block=true;
for (int i=0; i<= 5; i++) {
String [] seperated = ins_mp3List[i].toString().split(directory);
user_instruments[i]=ins_mp3List[i].toString();
user_instruments_toShow[i] = seperated[1];
Log.v("Instruments","true");
}
}else{
for (int i=0; i< ins_mp3List.length; i++) {
user_instruments_block=false;
String [] seperated = ins_mp3List[i].toString().split(directory);
user_instruments[i]=ins_mp3List[i].toString();
user_instruments_toShow[i] = seperated[1];
Log.v("Instruments", user_instruments[i]);
}
sdCard フォルダには 8 つのファイルがあります。soundQ_check=0
.
LogCat はエラーを返します:
01-27 19:52:11.652: E/AndroidRuntime(2667): FATAL EXCEPTION: main
01-27 19:52:11.652: E/AndroidRuntime(2667): java.lang.NullPointerException
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.widget.AbsListView.obtainView(AbsListView.java:2019)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.widget.ListView.measureHeightOfChildren(ListView.java:1244)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.widget.ListView.onMeasure(ListView.java:1155)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.view.View.measure(View.java:12881)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4802)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1385)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.widget.LinearLayout.measureVertical(LinearLayout.java:676)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.widget.LinearLayout.onMeasure(LinearLayout.java:557)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.view.View.measure(View.java:12881)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4802)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1385)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.widget.LinearLayout.measureVertical(LinearLayout.java:676)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.widget.LinearLayout.onMeasure(LinearLayout.java:557)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.view.View.measure(View.java:12881)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4802)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.widget.FrameLayout.onMeasure(FrameLayout.java:297)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.view.View.measure(View.java:12881)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4802)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.widget.FrameLayout.onMeasure(FrameLayout.java:297)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.view.View.measure(View.java:12881)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4802)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.widget.FrameLayout.onMeasure(FrameLayout.java:297)
01-27 19:52:11.652: E/AndroidRuntime(2667): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2111)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.view.View.measure(View.java:12881)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.os.Handler.dispatchMessage(Handler.java:99)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.os.Looper.loop(Looper.java:137)
01-27 19:52:11.652: E/AndroidRuntime(2667): at android.app.ActivityThread.main(ActivityThread.java:4441)
01-27 19:52:11.652: E/AndroidRuntime(2667): at java.lang.reflect.Method.invokeNative(Native Method)
01-27 19:52:11.652: E/AndroidRuntime(2667): at java.lang.reflect.Method.invoke(Method.java:511)
01-27 19:52:11.652: E/AndroidRuntime(2667): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-27 19:52:11.652: E/AndroidRuntime(2667): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-27 19:52:11.652: E/AndroidRuntime(2667): at dalvik.system.NativeStart.main(Native Method)
どこかの条件が間違っていると思います...どんな助けでも大歓迎です。音の量が 6 未満の場合は正常に動作しますが、6 を超える場合は nullPointerException が発生します...
UPD LAST:解決策を見つけました。入れるべきではなかった
user_instruments = new String[ins_mp3List.length]; //will be used in a system internally
user_instruments_toShow =new String[ins_mp3List.length]; //will
条件外。これらの行は、条件の下にあるはずです。長さが異なるため、エラーが発生しました。実際の長さは 8 で、そのうちの 6 つだけを初期化していました。両方の文字列を条件の下に置くと、機能します。コメントありがとうございます!