내 앱은 미디어 저장소에서 앨범을 반환하고 listview에 저장합니다. 앨범을 클릭하면 해당 앨범과 관련된 노래가 들어있는 다른 목록보기가 열립니다. 하지만 노래를 클릭하면 앱이 다운됩니다. 선택한 노래의 파일 경로를 가져 와서 해당 노래를 재생하는 다른 활동으로 전달할 수 있기를 원합니다. 여기 내 코드 : public class Albums extends ListActivity { 커서 커서;listview에서 데이터를 가져와 다른 액티비티로 전달하는 방법
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.playlist);
String[] columns = { android.provider.MediaStore.Audio.Albums._ID,
android.provider.MediaStore.Audio.Albums.ALBUM };
cursor = managedQuery(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
columns, null, null, null);
String[] displayFields = new String[] { MediaStore.Audio.Albums.ALBUM };
int[] displayViews = new int[] { android.R.id.text1 };
setListAdapter(new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1, cursor, displayFields,
displayViews));
}
protected void onListItemClick(ListView l, View v, int position, long id) {
if (cursor.moveToPosition(position)) {
String[] columns = { MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media._ID, MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.MIME_TYPE, };
String where = android.provider.MediaStore.Audio.Media.ALBUM + "=?";
String whereVal[] = { cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Albums.ALBUM)) };
String orderBy = android.provider.MediaStore.Audio.Media.TITLE;
cursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
columns, where, whereVal, orderBy);
String[] displayFields = new String[] { MediaStore.Audio.Media.DISPLAY_NAME };
int[] displayViews = new int[] { android.R.id.text1 };
setListAdapter(new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1, cursor, displayFields,
displayViews));
}
}
}
이것은 로그 캣에 포함되어있는 것입니다 :
07-18 17:44:20.327: D/libEGL(30458): loaded /system/lib/egl/libGLES_android.so
07-18 17:44:20.387: D/libEGL(30458): loaded /system/lib/egl/libEGL_adreno200.so
07-18 17:44:20.407: D/libEGL(30458): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
07-18 17:44:20.437: D/libEGL(30458): loaded /system/lib/egl/libGLESv2_adreno200.so
07-18 17:44:20.607: I/Adreno200-EGLSUB(30458): <ConfigWindowMatch:2078>: Format RGBA_8888.
07-18 17:44:20.667: D/memalloc(30458): ashmem: Mapped buffer base:0x51fcf000 size:1536000 fd:62
07-18 17:44:20.697: D/OpenGLRenderer(30458): Enabling debug mode 0
07-18 17:44:20.818: D/memalloc(30458): ashmem: Mapped buffer base:0x52156000 size:1536000 fd:65
07-18 17:44:40.737: D/OpenGLRenderer(30458): has fontRender patch
07-18 17:44:41.047: D/memalloc(30458): ashmem: Mapped buffer base:0x526bd000 size:1536000 fd:68
07-18 17:44:43.750: I/Adreno200-EGLSUB(30458): <ConfigWindowMatch:2078>: Format RGBA_8888.
07-18 17:44:43.770: D/memalloc(30458): ashmem: Mapped buffer base:0x52834000 size:1536000 fd:71
07-18 17:44:43.960: D/memalloc(30458): ashmem: Mapped buffer base:0x52bab000 size:1536000 fd:78
07-18 17:44:43.980: D/OpenGLRenderer(30458): Flushing caches (mode 0)
07-18 17:44:44.981: D/memalloc(30458): ashmem: Mapped buffer base:0x51ecf000 size:1536000 fd:63
07-18 17:44:47.454: E/CursorWindow(30458): Failed to read row 4, column -1 from a CursorWindow which has 11 rows, 5 columns.
07-18 17:44:47.454: D/AndroidRuntime(30458): Shutting down VM
07-18 17:44:47.454: W/dalvikvm(30458): threadid=1: thread exiting with uncaught exception (group=0x40ac7228)
07-18 17:44:47.494: E/AndroidRuntime(30458): FATAL EXCEPTION: main
07-18 17:44:47.494: E/AndroidRuntime(30458): java.lang.IllegalStateException: Couldn't read row 4, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
07-18 17:44:47.494: E/AndroidRuntime(30458): at android.database.CursorWindow.nativeGetString(Native Method)
07-18 17:44:47.494: E/AndroidRuntime(30458): at android.database.CursorWindow.getString(CursorWindow.java:491)
07-18 17:44:47.494: E/AndroidRuntime(30458): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
07-18 17:44:47.494: E/AndroidRuntime(30458): at android.database.CursorWrapper.getString(CursorWrapper.java:118)
07-18 17:44:47.494: E/AndroidRuntime(30458): at com.project.helixplayer.Albums.onListItemClick(Albums.java:49)
07-18 17:44:47.494: E/AndroidRuntime(30458): at android.app.ListActivity$2.onItemClick(ListActivity.java:326)
07-18 17:44:47.494: E/AndroidRuntime(30458): at android.widget.AdapterView.performItemClick(AdapterView.java:292)
07-18 17:44:47.494: E/AndroidRuntime(30458): at android.widget.AbsListView.performItemClick(AbsListView.java:1077)
07-18 17:44:47.494: E/AndroidRuntime(30458): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2533)
07-18 17:44:47.494: E/AndroidRuntime(30458): at android.widget.AbsListView$1.run(AbsListView.java:3198)
07-18 17:44:47.494: E/AndroidRuntime(30458): at android.os.Handler.handleCallback(Handler.java:605)
07-18 17:44:47.494: E/AndroidRuntime(30458): at android.os.Handler.dispatchMessage(Handler.java:92)
07-18 17:44:47.494: E/AndroidRuntime(30458): at android.os.Looper.loop(Looper.java:154)
07-18 17:44:47.494: E/AndroidRuntime(30458): at android.app.ActivityThread.main(ActivityThread.java:4945)
07-18 17:44:47.494: E/AndroidRuntime(30458): at java.lang.reflect.Method.invokeNative(Native Method)
07-18 17:44:47.494: E/AndroidRuntime(30458): at java.lang.reflect.Method.invoke(Method.java:511)
07-18 17:44:47.494: E/AndroidRuntime(30458): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
07-18 17:44:47.494: E/AndroidRuntime(30458): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
07-18 17:44:47.494: E/AndroidRuntime(30458): at dalvik.system.NativeStart.main(Native Method)
07-18 17:44:49.846: D/Process(30458): killProcess, pid=30458
07-18 17:44:49.846: D/Process(30458): dalvik.system.VMStack.getThreadStackTrace(Native Method)
07-18 17:44:49.846: D/Process(30458): java.lang.Thread.getStackTrace(Thread.java:599)
07-18 17:44:49.846: D/Process(30458): android.os.Process.killProcess(Process.java:788)
07-18 17:44:49.846: D/Process(30458): com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:104)
07-18 17:44:49.846: D/Process(30458): java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
07-18 17:44:49.846: D/Process(30458): java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
07-18 17:44:49.846: D/Process(30458): dalvik.system.NativeStart.main(Native Method)
07-18 17:44:49.846: I/Process(30458): Sending signal. PID: 30458 SIG: 9
내가 생각하기에 : "커서가 데이터를 액세스하기 전에 올바르게 초기화되었는지 확인하십시오." . 커서에 액세스하려면 코드를 사용해보십시오. 당신은 질의를 할 필요가 없습니다! – JJ86