package com.example.finalproject;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.Button;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;public class MainActivity extends Activity { private Button btn1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn1=(Button) findViewById(R.id.Music);
        btn1.setOnClickListener(new OnClickListener()
        {            public void onClick(View v)
            {
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, Music.class);
                startActivity(intent);
                MainActivity.this.finish();
            }        });
       
    }}
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import android.app.ListActivity;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.GradientDrawable.Orientation;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Handler;
import android.view.KeyEvent;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
public class Music extends ListActivity {
    
    private Button btn2;
    private ImageButton FrontButton = null;
private ImageButton StopButton = null;
private ImageButton StartButton = null;
private ImageButton PauseButton = null;
private ImageButton NextButton = null;
Handler PercentHandler = new Handler();

private SeekBar     SeekBar=null;
private TextView curProgressText=null;
private TextView curtimeAndTotaltime=null;

public MediaPlayer mMediaPlayer;
private List<String> mMusicList = new ArrayList<String>();
private int currentListItem = 0;

private static final String MUSIC_PATH = new String("/sdcard/");
  
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.music_wel);
        musicList();
        mMediaPlayer = new MediaPlayer();
        initmFrontMusic();
        initStopMusic();
        initStartMusic();
        initPauseMusic();
        initNextMusic();
        initSeekBar();
        
        btn2=(Button)findViewById(R.id.MusicReturn);
        btn2.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v)
            {
                Intent itent=new Intent();
                itent.setClass(Music.this, MainActivity.class);
                startActivity(itent);
                Music.this.finish();
            }
        });
        
     
    }
    
    
    public void initmFrontMusic()
{
FrontButton = (ImageButton)findViewById(R.id.last);
FrontButton.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) {
             if(--currentListItem >= 0){
             currentListItem = mMusicList.size();
             }else{
             playMusic(MUSIC_PATH + mMusicList.get(currentListItem));
             }
}
});
}
    
    public void initStopMusic()
{
StopButton = (ImageButton)findViewById(R.id.stop);
StopButton.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) {
if(mMediaPlayer.isPlaying())
{
mMediaPlayer.reset();
}
}
});
}
    
    public void initStartMusic()
{
StartButton = (ImageButton)findViewById(R.id.start);
StartButton.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) {
playMusic(MUSIC_PATH + mMusicList.get(currentListItem));
startSeekBarUpdate();
}
});
}
    
    public void initPauseMusic()
{
PauseButton = (ImageButton)findViewById(R.id.pause);
PauseButton.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) {
if(mMediaPlayer.isPlaying()){
mMediaPlayer.pause();
}
else{
mMediaPlayer.start();
}
}
});
}
    
    public void initNextMusic()
{
NextButton = (ImageButton)findViewById(R.id.next);
NextButton.setOnClickListener(new OnClickListener(){ public void onClick(View arg0) {
nextMusic();
}
});
}
    
    public void initSeekBar()
{
/*初始化拖动条和当前进度显示值*/
        SeekBar=(SeekBar)findViewById(R.id.seekBar1);
        curProgressText=(TextView)findViewById(R.id.currentProgress);
        curtimeAndTotaltime=(TextView)findViewById(R.id.curtimeandtotaltime);
        
SeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
/* 如果拖动进度发生改变,则显示当前进度值 */
curProgressText.setText("当前进度: " + progress);
} public void onStartTrackingTouch(SeekBar arg0) {
curProgressText.setText("拖动中...");
} public void onStopTrackingTouch(SeekBar arg0) {
int dest = SeekBar.getProgress();    
int mMax = mMediaPlayer.getDuration();
int sMax = SeekBar.getMax(); mMediaPlayer.seekTo(mMax*dest/sMax); }
});
}
    
    private void playMusic(String path)
{
try {
mMediaPlayer.reset();
mMediaPlayer.setDataSource(path);
mMediaPlayer.prepare();
mMediaPlayer.start();
mMediaPlayer.setOnCompletionListener(new OnCompletionListener(){ public void onCompletion(MediaPlayer arg0) {
nextMusic();
}
});
 }catch (IOException e) {
e.printStackTrace();
}
}
    
    private void nextMusic()
{
if(++currentListItem >= mMusicList.size())
{
currentListItem = 0;
}
else
{
playMusic(MUSIC_PATH + mMusicList.get(currentListItem));
}
}
    
    @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK){
         mMediaPlayer.stop();
         mMediaPlayer.release();
        }
return super.onKeyDown(keyCode, event);
} @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
currentListItem = position;
playMusic(MUSIC_PATH + mMusicList.get(position));
super.onListItemClick(l, v, position, id);
} //播放列表
public void musicList()
{
File home = new File(MUSIC_PATH);
if(home.listFiles(new MusicFilter()).length > 0)
{
for(File file : home.listFiles(new MusicFilter()))
{
mMusicList.add(file.getName());
}
ArrayAdapter<String> musicList=new ArrayAdapter<String>(Music.this,R.layout.musicitem,mMusicList);
setListAdapter(musicList);
}
}

/*更新拖动条进度*/ public void startSeekBarUpdate() {
PercentHandler.post(start);
} Runnable start = new Runnable() { public void run() {
// 用一个handler更新SeekBar
PercentHandler.post(updatesb);
} }; Runnable updatesb =new Runnable(){ public void run() {
int position = mMediaPlayer.getCurrentPosition();
int mMax = mMediaPlayer.getDuration();
int sMax = SeekBar.getMax();
SeekBar.setProgress(position * sMax / mMax);
curtimeAndTotaltime.setText("当前播放时间: " + position / 1000 + "秒"
+ "\n歌曲总时间: " + mMax / 1000 + "秒");
// 每秒钟更新一次
PercentHandler.postDelayed(updatesb, 1000);
} };
//过滤文件类型
class MusicFilter implements FilenameFilter
{ public boolean accept(File dir, String name) {
//这里还可以设置其他格式的音乐文件
return (name.endsWith(".mp3"));
}
}
    
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.finalproject"
    android:versionCode="1"
    android:versionName="1.0" >    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.finalproject.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.example.finalproject.Music"></activity>        
    </application></manifest>
—————————————————————————————————————————
基本都是照着书打出来的代码,在manifest里把2个用到的activity也注册了,可还是从主页面跳转进去的时候就崩溃出错了,请问各位这是什么原因?

解决方案 »

  1.   

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >    <Button
            android:id="@+id/MusicReturn"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:text="Button" />
        
        <SeekBar
            android:id="@+id/seekBar1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/last"
            android:layout_alignParentLeft="true"
            android:layout_marginBottom="44dp"
            android:max="100"
            android:progress="0"
            android:secondaryProgress="0"
            android:visibility="visible" />
        
        <ListView
            android:id="@+id/android:list"
            android:layout_width="fill_parent"
            android:layout_height="200dip"
            android:layout_weight="1"
            android:drawSelectorOnTop="false" >
        </ListView>    <MediaController
            android:id="@+id/mediaController1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginTop="180dp" >
        </MediaController>    <ImageButton
            android:id="@+id/last"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_above="@+id/MusicReturn"
            android:layout_marginLeft="16dp"
            android:layout_toRightOf="@+id/mediaController1"
            android:src="@drawable/last" />    <ImageView
            android:id="@+id/stop"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/last"
            android:layout_marginLeft="17dp"
            android:layout_toRightOf="@+id/last"
            android:src="@drawable/stop" />    <ImageButton
            android:id="@+id/start"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_above="@+id/MusicReturn"
            android:layout_marginLeft="18dp"
            android:layout_toRightOf="@+id/stop"
            android:src="@drawable/start" />    <ImageButton
            android:id="@+id/pause"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_above="@+id/MusicReturn"
            android:layout_marginLeft="15dp"
            android:layout_toRightOf="@+id/start"
            android:src="@drawable/pause" />    <ImageButton
            android:id="@+id/next"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_alignTop="@+id/pause"
            android:layout_toLeftOf="@+id/MusicReturn"
            android:src="@drawable/next" />    <TextView
            android:id="@+id/curtimeandtotaltime"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/last"
            android:layout_alignParentLeft="true"
            android:layout_marginBottom="28dp" />    <TextView
            android:id="@+id/currentProgress"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/last"
            android:layout_alignParentLeft="true"
            android:layout_marginBottom="14dp" /></RelativeLayout>
    ————————————————————————————————————————
    这个是播放器要用的xml文件,主界面的xml文件已经测试了没问题,现在不知道哪里出了问题导致崩溃