我有一个 listView 和一个处理程序和一个媒体播放器。列表视图由包含歌词的字符串数组支持。现在随着歌曲的进行,我希望当时带有歌词的特定行成为列表中的第一个视图并突出显示。我在处理程序中有以下代码:
public void run(){
int X = mediaPlayer.getCurrentPosition();
S1.setText(""+X);
setProgressText();
seek_bar.setProgress(mediaPlayer.getCurrentPosition());
if(mediaPlayer.getCurrentPosition()/1000 > 0 && mediaPlayer.getCurrentPosition()/1000 < 20){
listView.smoothScrollToPosition(3);
View element = listView.getChildAt(3);
element.setBackgroundColor(Color.YELLOW);
}else if(mediaPlayer.getCurrentPosition()/1000 > 20 && mediaPlayer.getCurrentPosition()/1000 < 54){
listView.smoothScrollToPosition(4);
View element = listView.getChildAt(4);
element.setBackgroundColor(Color.YELLOW);
System.out.println("2 if");
第一个 if 条件执行得非常好,但是在第二个 if 条件下我得到了 NPE。
这是我的原木猫:
09-23 10:13:22.237: E/AndroidRuntime(307): FATAL EXCEPTION: main
09-23 10:13:22.237: E/AndroidRuntime(307): java.lang.NullPointerException
09-23 10:13:22.237: E/AndroidRuntime(307): at com.mobiligent.stotram.MainActivity$1$2.run(MainActivity.java:183)
09-23 10:13:22.237: E/AndroidRuntime(307): at android.os.Handler.handleCallback(Handler.java:587)
09-23 10:13:22.237: E/AndroidRuntime(307): at android.os.Handler.dispatchMessage(Handler.java:92)
09-23 10:13:22.237: E/AndroidRuntime(307): at android.os.Looper.loop(Looper.java:123)
09-23 10:13:22.237: E/AndroidRuntime(307): at android.app.ActivityThread.main(ActivityThread.java:4627)
09-23 10:13:22.237: E/AndroidRuntime(307): at java.lang.reflect.Method.invokeNative(Native Method)
09-23 10:13:22.237: E/AndroidRuntime(307): at java.lang.reflect.Method.invoke(Method.java:521)
09-23 10:13:22.237: E/AndroidRuntime(307): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-23 10:13:22.237: E/AndroidRuntime(307): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-23 10:13:22.237: E/AndroidRuntime(307): at dalvik.system.NativeStart.main(Native Method)