0

我有这行代码:

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

哪个应该可以,但是eclipse给了我一个错误:“令牌上的语法错误“;”,,预期”

这是我的代码的上半部分:

public class Main extends Activity implements OnClickListener
{
    ListView lv;
    static final int check = 1111;

    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lv = (ListView) findViewById(R.id.listView1);
        Button b = (Button) findViewById(R.id.button1);
        b.setOnClickListener(this);
    }
    Cursor cursor;
    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.DISPLAY_NAME, MediaStore.Audio.Media.DURATION};

    cursor = this.managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection, null, null);

    private List<String> songs = new ArrayList<String>();
    while(cursor.moveToNext())
    {
        songs.add(cursor.getString(0) + "||" + cursor.getString(1) + "||" +   cursor.getString(2) + "||" +   cursor.getString(3) + "||" +  cursor.getString(4) + "||" +  cursor.getString(5));
    }
4

1 回答 1

6

下一行代码:

cursor = this.managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection, null, null);

需要在方法或构造函数(或某种初始化块)中。它不能像你现在拥有的那样在课堂上随意闲逛。请注意,根据@MarounMaroun,您还有其他具有相同问题的代码 - 例如您的下一个 while 循环。或者您可以在此时声明游标,但这可能有风险,因为如果您这样做,如果有发生这种情况的风险,您将无法捕获异常。

考虑通过将所有变量声明放在一起(我通常将它们放在顶部),然后是构造函数,然后是方法来更好地组织你的代码。

于 2013-05-18T14:09:49.707 回答