2013-10-23 26 views
0

我想收集设备外部来源的所有音频文件。当我在设备上运行时,我收到一条消息,说Unfortanately“”已停止。我还没有能够找到问题仍然存在的地方。我看了网上,发现了很多例子,它完全是这样的,没有什么会工作。Android上的音频文件ListView

package com.example.djraspi; 

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

import android.os.Bundle; 
import android.provider.MediaStore; 
import android.app.ListActivity; 
import android.view.Menu; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.database.Cursor; 

public class MainActivity extends ListActivity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
initMusicList(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
// Inflate the menu; this adds items to the action bar if it is present. 
getMenuInflater().inflate(R.menu.main, menu); 
return true; 
} 
private void initMusicList(){ 
String selection = MediaStore.Audio.Media.IS_MUSIC + " !=0"; 
String[] projection = { 
MediaStore.Audio.Media._ID, 
MediaStore.Audio.Media.ARTIST_ID, 
MediaStore.Audio.Media.TITLE, 
MediaStore.Audio.Media.DATA, 
MediaStore.Audio.Media.DISPLAY_NAME, 
MediaStore.Audio.Media.DURATION 
}; 

Cursor cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection, null, null); 
List<String> songList = new ArrayList<String>(); 
while(cursor.moveToNext()){ 
songList.add(cursor.getString(0) + 
"||" + cursor.getString(1) + "||" + cursor.getString(2) + "||" + cursor.getString(3) + "||" + cursor.getString(4) + "||" + cursor.getString(5) + "||" + cursor.getString(6)); 
} 
this.setListAdapter(new ArrayAdapter<String>(this, R.layout.activity_main, android.R.id.list, songList)); 


} 

} 

这里是我的activity_main

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="20dp"/> 

</RelativeLayout> 

这里是我的logcat的文件,我得到:

10-23 12:35:44.093: I/Process(8677): Sending signal. PID: 8677 SIG: 9 
10-23 12:36:42.131: E/Trace(8837): error opening trace file: No such file or directory (2) 
10-23 12:36:42.264: D/AndroidRuntime(8837): Shutting down VM 
10-23 12:36:42.264: W/dalvikvm(8837): threadid=1: thread exiting with uncaught exception (group=0x40dbf2a0) 
10-23 12:36:42.303: E/AndroidRuntime(8837): FATAL EXCEPTION: main 
10-23 12:36:42.303: E/AndroidRuntime(8837): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.djraspi/com.example.djraspi.MainActivity}: java.lang.NullPointerException 
10-23 12:36:42.303: E/AndroidRuntime(8837):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2136) 
10-23 12:36:42.303: E/AndroidRuntime(8837):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2174) 
10-23 12:36:42.303: E/AndroidRuntime(8837):  at android.app.ActivityThread.access$700(ActivityThread.java:141) 
10-23 12:36:42.303: E/AndroidRuntime(8837):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1267) 
10-23 12:36:42.303: E/AndroidRuntime(8837):  at android.os.Handler.dispatchMessage(Handler.java:99) 
10-23 12:36:42.303: E/AndroidRuntime(8837):  at android.os.Looper.loop(Looper.java:137) 
10-23 12:36:42.303: E/AndroidRuntime(8837):  at android.app.ActivityThread.main(ActivityThread.java:5059) 
10-23 12:36:42.303: E/AndroidRuntime(8837):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-23 12:36:42.303: E/AndroidRuntime(8837):  at java.lang.reflect.Method.invoke(Method.java:511) 
10-23 12:36:42.303: E/AndroidRuntime(8837):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) 
10-23 12:36:42.303: E/AndroidRuntime(8837):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 
10-23 12:36:42.303: E/AndroidRuntime(8837):  at dalvik.system.NativeStart.main(Native Method) 
10-23 12:36:42.303: E/AndroidRuntime(8837): Caused by: java.lang.NullPointerException 
10-23 12:36:42.303: E/AndroidRuntime(8837):  at com.example.djraspi.MainActivity.initMusicList(MainActivity.java:43) 
10-23 12:36:42.303: E/AndroidRuntime(8837):  at com.example.djraspi.MainActivity.onCreate(MainActivity.java:21) 
10-23 12:36:42.303: E/AndroidRuntime(8837):  at android.app.Activity.performCreate(Activity.java:5058) 
10-23 12:36:42.303: E/AndroidRuntime(8837):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
10-23 12:36:42.303: E/AndroidRuntime(8837):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100) 
10-23 12:36:42.303: E/AndroidRuntime(8837):  ... 11 more 
10-23 12:41:48.053: E/Trace(9081): error opening trace file: No such file or directory (2) 
10-23 12:41:48.467: D/AndroidRuntime(9081): Shutting down VM 
10-23 12:41:48.467: W/dalvikvm(9081): threadid=1: thread exiting with uncaught exception (group=0x40dbf2a0) 
10-23 12:41:48.467: E/AndroidRuntime(9081): FATAL EXCEPTION: main 
10-23 12:41:48.467: E/AndroidRuntime(9081): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.djraspi/com.example.djraspi.MainActivity}: java.lang.NullPointerException 
10-23 12:41:48.467: E/AndroidRuntime(9081):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2136) 
10-23 12:41:48.467: E/AndroidRuntime(9081):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2174) 
10-23 12:41:48.467: E/AndroidRuntime(9081):  at android.app.ActivityThread.access$700(ActivityThread.java:141) 
10-23 12:41:48.467: E/AndroidRuntime(9081):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1267) 
10-23 12:41:48.467: E/AndroidRuntime(9081):  at android.os.Handler.dispatchMessage(Handler.java:99) 
10-23 12:41:48.467: E/AndroidRuntime(9081):  at android.os.Looper.loop(Looper.java:137) 
10-23 12:41:48.467: E/AndroidRuntime(9081):  at android.app.ActivityThread.main(ActivityThread.java:5059) 
10-23 12:41:48.467: E/AndroidRuntime(9081):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-23 12:41:48.467: E/AndroidRuntime(9081):  at java.lang.reflect.Method.invoke(Method.java:511) 
10-23 12:41:48.467: E/AndroidRuntime(9081):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) 
10-23 12:41:48.467: E/AndroidRuntime(9081):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 
10-23 12:41:48.467: E/AndroidRuntime(9081):  at dalvik.system.NativeStart.main(Native Method) 
10-23 12:41:48.467: E/AndroidRuntime(9081): Caused by: java.lang.NullPointerException 
10-23 12:41:48.467: E/AndroidRuntime(9081):  at com.example.djraspi.MainActivity.initMusicList(MainActivity.java:43) 
10-23 12:41:48.467: E/AndroidRuntime(9081):  at com.example.djraspi.MainActivity.onCreate(MainActivity.java:21) 
10-23 12:41:48.467: E/AndroidRuntime(9081):  at android.app.Activity.performCreate(Activity.java:5058) 
10-23 12:41:48.467: E/AndroidRuntime(9081):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
10-23 12:41:48.467: E/AndroidRuntime(9081):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100) 
10-23 12:41:48.467: E/AndroidRuntime(9081):  ... 11 more 
+0

请张贴崩溃日志 –

+0

想要logcat或错误日志?我相当新的Eclipse环境以及Java和Android – user2819738

+0

张贴在这里日志猫输出,你应该已经在发布您的问题之前搜索解决方案 –

回答

0

试试这个:

<ListView 
    android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 
+0

仍然一样。这是我的LogCat文件: – user2819738

+0

检查我编辑的答案。 –

+0

仍然不会打开,并获取弹出消息,并说不幸... – user2819738

0

您正在使用ListActivity。将您的listView ID设置为android:id="@android:id/list",地址为XML

<ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="20dp" 
     android:listSelector="@drawable/menu_listitem_selector"/> 
0

使用listview的id作为android的列表。

<ListView 
    android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 

您是否读过logcat? 它说“java.lang.RuntimeException:你的内容必须有一个ListView的id属性是'android.R.id.list”,所以给出id列表,你会找到解决方案。