第35行是    setContentView(R.layout.main);

解决方案 »

  1.   

    不好意思,忘了贴main.xml了<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <Button
    android:id = "@+id/idLastOne"
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:text = "@string/last"
    />
    <Button
    android:id = "@+id/idPause"
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:text = "@string/pause"
    />
    <Button
    android:id = "@+id/idStart"
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:text = "@string/start"
    />
    <Button
    android:id = "@+id/idStop"
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:text = "@string/end"
    />
    <Button
    android:id = "@+id/idNextOne"
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:text = "@string/next"
    />
    <ListView
    android:id = "@+id/idList"
    android:layout_width = "fill_parent"
    android:layout_height = "wrap_content"
    android:layout_weight="1"
       android:drawSelectorOnTop="false"
    />
    </LinearLayout>
    还用到了musiclist.xml<?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id = "@+id/idTextView"
    android:layout_width = "fill_parent"
    android:layout_height = "wrap_content"
    />eclipse不报错,在模拟器上打开此程序出现了那个经典的警告。
      

  2.   

    我不相信是setContentView()这里的问题。你把其他行全部都注释掉看看。会不会报错。
      

  3.   

    具体的错误我不太清楚,估计应该是你继承了ListActivity后,在mail.xml中使用Button控件等的原因。
    这可能会出项冲突,我不知道你为什么一定要用ListActivity呢?代码帮你修改了,使用正常的Activity,用ListView显示SD卡中的音频数据。mail.xml中的布局也重新整理了一下,代码测试过,好用,你看看吧。
      

  4.   

    MediaPlayerSdcardActivity.javapackage allmycheers.android.MediaPlayerSdcard;import java.io.File;
    import java.io.FilenameFilter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;import android.app.Activity;
    import android.media.MediaPlayer;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.ListView;
    import android.widget.AdapterView.OnItemClickListener;public class MediaPlayerSdcardActivity extends Activity {
        private Button startButton = null;
        private Button endButton = null;
        private Button pauseButton = null;
        private Button lastButton = null;
        private Button nextButton = null;
        private ListView listView = null;
        
        private List<String> music_list = new ArrayList<String>();
        private int currentItem = 0;
        private static final String MUSIC_PATH = new String("/sdcard/");
        private MediaPlayer mplayer = null;
        
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            
            
            mplayer = new MediaPlayer();
            
            startButton = (Button)findViewById(R.id.idStart);
            startButton.setOnClickListener(new startButtonListener());
            
            endButton = (Button)findViewById(R.id.idStop);
            endButton.setOnClickListener(new endButtonListener());
            
            pauseButton = (Button)findViewById(R.id.idPause);
            pauseButton.setOnClickListener(new pauseButtonListener());
            
            lastButton = (Button)findViewById(R.id.idLastOne);
            lastButton.setOnClickListener(new lastButtonListener());
            
            nextButton = (Button)findViewById(R.id.idNextOne);
            nextButton.setOnClickListener(new nextButtonListener());
            
            listView = (ListView)findViewById(R.id.idList);
            musicList();
            listView.setOnItemClickListener(new OnItemClickListener(){
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    long arg3) {
    // TODO Auto-generated method stub
    currentItem = arg2;
            playMusic(MUSIC_PATH + music_list.get(arg2));
    }
            });
            
        }
         public void playMusic(String path) {
            mplayer.reset();
            try {
                mplayer.setDataSource(path);
            } catch (IllegalArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalStateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                mplayer.prepare();
            } catch (IllegalStateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            mplayer.start();
        }
        
        public void lastMusic() {
            currentItem--;
            if (currentItem < 0) {
                currentItem = music_list.size()-1;
            } else {
                playMusic(MUSIC_PATH + music_list.get(currentItem));
            }
        }
        
        public void nextMusic() {
            currentItem++;
            if (currentItem >= music_list.size()) {
                currentItem = 0;
            } else {
                playMusic(MUSIC_PATH + music_list.get(currentItem));
            }
        }
         
        
        @Override
        public boolean onKeyUp(int keyCode, KeyEvent event) {
            // TODO Auto-generated method stub
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                mplayer.stop();
                mplayer.release();
                MediaPlayerSdcardActivity.this.finish();
                return true;
            }
            return super.onKeyUp(keyCode, event);
        }      public void musicList() {
            File f = new File(MUSIC_PATH);
            File[] files = f.listFiles();
            
            for (int i=0; i<files.length; i++) {
             File file = files[i];
             if(getAudioFile(file.getPath())){
             music_list.add(file.getName());
             }
            }
            ArrayAdapter<String> musicList = new ArrayAdapter<String>(MediaPlayerSdcardActivity.this, R.layout.musiclist, music_list);
            listView.setAdapter(musicList);
        }
        
        public boolean getAudioFile(String fName){
         boolean bRet;
         String end = fName.substring(fName.lastIndexOf(".")+1, fName.length()).toLowerCase();
        
         if(end.equals("mp3")||end.equals("wav")){ //在这里添加其他类型的Audio数据
         bRet = true;
         }
         else{
         bRet = false;
         }
         return bRet;
        }
        
        class MusicFilter implements FilenameFilter {
            public boolean accept(File dir, String filename) {
                // TODO Auto-generated method stub
                return (filename.endsWith(".mp3"));
            }
        }
        
        
        class startButtonListener implements OnClickListener {
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (!mplayer.isPlaying()) {
                    playMusic(MUSIC_PATH + music_list.get(currentItem));
                }
            }
        }
        
        class endButtonListener implements OnClickListener {
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (mplayer.isPlaying()) {
                    mplayer.reset();
                }
            }
        }
        
        class pauseButtonListener implements OnClickListener {
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (mplayer.isPlaying()) {
                    mplayer.pause();
                }
            }
        }
        
        class lastButtonListener implements OnClickListener {
            public void onClick(View v) {
                // TODO Auto-generated method stub
                lastMusic();
            }
        }
        
        class nextButtonListener implements OnClickListener {
            public void onClick(View v) {
                // TODO Auto-generated method stub
                nextMusic();
            }
        }
    }
      

  5.   

    main.xml<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <LinearLayout 
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    >
        <Button
            android:id = "@+id/idLastOne"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:text = "@string/last"
            />
        <Button
            android:id = "@+id/idPause"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:text = "@string/pause"
            />
        <Button
            android:id = "@+id/idStart"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:text = "@string/start"
            />
        <Button
            android:id = "@+id/idStop"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:text = "@string/end"
            />
        <Button
            android:id = "@+id/idNextOne"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:text = "@string/next"
            />
    </LinearLayout><ListView
    android:id = "@+id/idList"
    android:layout_width = "fill_parent"
    android:layout_height = "wrap_content"
    android:layout_weight="1"
    android:drawSelectorOnTop="false"
    />
    </LinearLayout>
      

  6.   


    亮点,我知道了。
    你如果要用listActivity的话,那个listView的Id是定死了的,否则,系统会找不到该ListView。
    To do this, your own view MUST contain a ListView object with the id "@android:id/list" (or list if it's in code)