2011-09-27 52 views
1

當我運行我的代碼時,我得到一個異常@ managedQuery。 什麼錯了? 我看不到它。Nullpointer @ managedQuery

import java.util.ArrayList; 
import java.util.List; 

import android.app.Activity; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.MediaStore; 

public class FileManager extends Activity 
{ 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
    } 

public List<String> getAudioFiles() 
{ 
    List<String> songs = new ArrayList<String>(); 

    //Some audio may be explicitly marked as not being music 
    String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; 

    String[] projection = { 
      MediaStore.Audio.Media._ID, 
      MediaStore.Audio.Media.ARTIST, 
      MediaStore.Audio.Media.TITLE, 
      MediaStore.Audio.Media.DATA, 
      MediaStore.Audio.Media.DURATION 
    }; 

    Cursor cursor = managedQuery(
      MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
      projection, 
      null, 
      null, 
      MediaStore.Audio.Media._ID); 

    while(cursor.moveToNext()){ 
      songs.add(cursor.getString(0) + "||" + cursor.getString(1) + "||" + cursor.getString(2) + "||" + cursor.getString(3) + "||" + cursor.getString(4) + "||" + cursor.getString(5)); 
    } 

    return songs; 
} 

}

這是例外

09-27 17:04:20.130: ERROR/AndroidRuntime(4079): FATAL EXCEPTION: main 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test/com.test.testActivity}: java.lang.NullPointerException 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.os.Looper.loop(Looper.java:130) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.app.ActivityThread.main(ActivityThread.java:3691) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at java.lang.reflect.Method.invoke(Method.java:507) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at dalvik.system.NativeStart.main(Native Method) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079): Caused by: java.lang.NullPointerException 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.content.ContextWrapper.getContentResolver(ContextWrapper.java:90) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.app.Activity.managedQuery(Activity.java:1556) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at com.test.FileManager.getAudioFiles(FileManager.java:35) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at com.test.testActivity.onCreate(testActivity.java:21) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
09-27 17:04:20.130: ERROR/AndroidRuntime(4079):  ... 11 more 
+0

請張貼你的例外。此外,根據Android SDK API,managedQuery已棄用(您應該使用CursorLoader代替)。 – Thor84no

+0

如果您在新帳戶中使用的電子郵件與您在舊帳戶中使用的電子郵件相同,那麼我可以合併您的帳戶,並讓您恢復此問題的所有權。請在完成後標出您的問題,選擇「其他」並要求合併。 –

回答

0

這可能不是有益的,但我注意到,你的預測是與五長數組和你的字符串的建築方法需要第六列(cursor.getString(5))。當然,這不會導致managedQuery出現NullPointerException,你確定這是發生異常的地方嗎?因爲這一點看起來不錯(除了你定義選擇標準但不使用它的事實)。