1. main activity

 public class PlayerActivity extends Activity implements Runnable,SeekBar.OnSeekBarChangeListener{
    
    boolean clickBar=true, done=false;
    TextView curtime;
    Thread tr;
    final Handler h = new Handler();    
    SeekBar sbar;
    static final String MEDIA_PATH = new String("/mnt/sdcard/"); // ROOT 경로를 지정합니다.
    List<String> songs = new ArrayList<String>();    
    
    Button play;
    Button ff;
    Button rew;
    Button pause;
    TextView fulltime;
    Button list;
  
    playSong play1 = new playSong();
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);       
        play = (Button)findViewById(R.id.button1);
        ff = (Button)findViewById(R.id.button2);
        rew = (Button)findViewById(R.id.button3);
        pause = (Button)findViewById(R.id.button4);
        Button list = (Button)findViewById(R.id.button5);
        
        pause.setVisibility(View.GONE);
        
        //플레이버튼
        play.setOnClickListener(new View.OnClickListener() {
   
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    play.setVisibility(View.GONE);
    pause.setVisibility(View.VISIBLE);
   
   }
  });
        
        //일시정지
        pause.setOnClickListener(new View.OnClickListener() {
   
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    pause.setVisibility(View.GONE);
    play.setVisibility(View.VISIBLE);
    
    play1.mp.pause();    
   }
  });
        
        //노래 리스트 activity 전환
        list.setOnClickListener(new View.OnClickListener() {
    @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    Intent intent = new Intent(PlayerActivity.this, song_list.class);
    startActivity(intent);
    finish();
   }
  });
    } 
}

2. sub activity

public class song_list extends ListActivity {
 
 static boolean result=false;
 static String[] value;
    
    PlayerActivity play2 = new PlayerActivity();
    playSong play1 = new playSong();    
    @Override
  public void onCreate(Bundle savedInstanceState){  
   super.onCreate(savedInstanceState);
   setContentView(R.layout.song_list); 
   final Button rtn = (Button)findViewById(R.id.RtnBtn); 
   
      updateSongList(); // SD카드로부터 파일 목록을 불러오는 역할을 합니다.
//main activity로 돌아가는 버튼
rtn.setOnClickListener(new View.OnClickListener() {
  
  @Override
  public void onClick(View v) {
  
   // TODO Auto-generated method stub
   Intent intent = new Intent(song_list.this, PlayerActivity.class);
   startActivity(intent); 
   finish();
  }
 });
 }
public void updateSongList() 
{
 File home = new File(play2.MEDIA_PATH); // home으로 sd카드의 root를 지정합니다.
 if (home.listFiles(new Mp3Filter()).length > 0) 
 {
  for (File file : home.listFiles(new Mp3Filter())) 
  {
   play2.songs.add(file.getName()); // 재생목록 리스트에 파일 이름을 추가합니다.
  }
  ArrayAdapter<String> songList = new ArrayAdapter<String>(this,R.layout.file_list_item, play2.songs); // ListView의 레이아웃 및 참조할 리스트를 설정합니다.
  setListAdapter(songList); // ListView와 ArrayList를 연결합니다.
 }
}
//목록클릭하면 그 곡 재생
protected void onListItemClick(ListView l, View v, int position, long id) 
{
 play1.playSong(play2.MEDIA_PATH + play2.songs.get(position));
 Intent intent = new Intent(song_list.this, PlayerActivity.class);
 startActivity(intent);
 finish();//sub activity 완전 종료 
}
 
}//end of class
class Mp3Filter implements FilenameFilter 
{
 public boolean accept(File dir, String name) 
 {
  return (name.endsWith(".m4a")|name.endsWith(".mp3"));
 }
}
 


먼저 액티비티는 메인액티비티(노래 플레이, 정지 아이콘)와 리스트를 보여줄 수 있는 액티비티 두개로 구성되어 있습니다.

메인 액티비티에서 노래 리스트 버튼을 클릭하면 서브액티비티로 넘어갑니다. 여기서 노래 리스트를 볼 수 있고요. 리스트에서 해당 노래를터치하면 첫 노래는 잘 시작됩니다. 또한 액티비티 전환을 하지 않을 시에는 먼저 실행된 노래는 중단되고 새롭게 터치한 노래가 시작됩니다.
문제는 여기서 노래를 터치와 동시에 플레이를 하면서 메인 액티비티로 전환을 하고 다시 서브액티비티로 돌아와서 노래를 터치하면 이전에 플레이 되던 노래가 중단되지 않고 새로운 노래와 함께 플레이 됩니다.

여러분의 도움 부탁드립니다.