2013-04-08 78 views
0

我有兩個活動Play.java和Home.java,Home.java包含ListView的onclick函數並獲取列表視圖的位置 我需要將該位置傳遞給Play.java.when我點擊listview 「不幸的是應用程序關閉」Android原始文件夾媒體播放器

Home.java

public void onItemClick(AdapterView<?> parent, View view, int position,long id) 
{  
    int songindex = position; 
    Intent intent = new Intent(this, Play.class); 
    startActivity(intent); 

    p1.listen(songindex); 
} 

Play.java

public void change(View v) 
    { 
     Intent intent = new Intent(this, Home.class); 
     startActivity(intent); 
    } 

    public void listen(int songindex) 
    { 
    MediaPlayer mPlayer2; 
    if(songindex==0) 
    { 
     mp=MediaPlayer.create(this, R.raw.gayatri); 
     mp.start(); 



    } 
    else if(songindex==1) 
    { 
     mPlayer2= MediaPlayer.create(this, R.raw.brahma); 
     mPlayer2.start(); 
    } 
    } 

當我點擊列表視圖,從它不是工作程序CLOS歌編號

+2

從logcat的堆棧跟蹤????? – 2013-04-08 07:09:02

+1

請參閱logcat,看看有什麼問題......並將該logcat屏幕縮短。 – Hemant 2013-04-08 07:12:38

+0

在Play.class的onCreate方法中寫第th支付代碼 – Pinki 2013-04-08 07:13:06

回答

0

您必須使用意圖傳遞位置。

Home.java 

public void onItemClick(AdapterView<?> parent, View view, int position,long id) 
{  
    int songindex = position; 
    Intent intent = new Intent(this, Play.class); 
    intnt.putExtra("position",position); 
    startActivity(intent); 

    // p1.listen(songindex); 
} 
Play.java 

public void change(View v) 
    { 
     Intent intent = new Intent(this, Home.class); 
     startActivity(intent); 
    } 

    public void listen(int songindex) 
    { 
    Bundle data = getIntent().getExtras(); 
     int position = data.getInt("position"); 

    MediaPlayer mPlayer2; 
    if(songindex==0) 
    { 
     mp=MediaPlayer.create(this, R.raw.gayatri); 
     mp.start(); 



    } 
    else if(songindex==1) 
    { 
     mPlayer2= MediaPlayer.create(this, R.raw.brahma); 
     mPlayer2.start(); 
    } 
    } 
+0

@PrabuJM:你到底想做什麼 – 2013-04-08 07:27:00

+0

當我點擊列表視圖歌曲的名字時應該從原始文件夾播放,當我ckick下一首歌曲前一首歌曲停止播放 – 2013-04-08 07:33:36

+0

喲想改變意圖與否? – 2013-04-08 07:34:59

0

認沽聽功能的主文件

Home.java 

public void onItemClick(AdapterView<?> parent, View view, int position,long id) 
{  
    listen(position); 
} 


    public void listen(int songindex) 
    { 



    MediaPlayer mPlayer2; 
    if(songindex==0) 
    { 
     mp=MediaPlayer.create(this, R.raw.gayatri); 
     mp.start(); 



    } 
    else if(songindex==1) 
    { 
     mPlayer2= MediaPlayer.create(this, R.raw.brahma); 
     mPlayer2.start(); 
    } 
    } 
+0

我使用模擬器中的代碼不幸的應用程序關閉錯誤 – 2013-04-08 09:01:29

+0

@PrabuJM:來這裏http://chat.stackoverflow.com/rooms/27387/android-india – 2013-04-08 10:31:58

0

的logcat應該把光給你的問題,但我們仍然沒有它。

那你爲什麼需要mp和mp2?要一次播放兩首歌曲?

我只會在類中聲明一個mp,而不是在方法中,因爲在你的情況下,在從listen方法退出後,對mp2播放器的引用會丟失,並且無法控制它(事實上,退出該方法後甚至可能停止播放)。

要在總之,這是我的建議:

MediaPlayer mp; 

static final int table[] songIndexIds= { R.raw.song1, R.raw.song2}; 


public void listen(int songIndex) 
    if (mp != null) { 
     mp.stop(); 
     mp.release(); 
     mp = null; 
    } 

    if (songIndex >= 0) { 
     mp=MediaPlayer.create(this, songIndexIds[songIndex]); 
     mp.start(); 
    } 

} 

// "Destructor" 
@Override 
public void finalize() { 
    if (mp != null) { 
     mp.stop(); 
     mp.release(); 
    } 

} 
+0

謝謝先生,現在我試試 – 2013-04-08 08:50:57

+0

在songIndexIds語法錯誤上顯示錯誤 – 2013-04-08 08:58:45

+0

替換R .raw.song1和R.raw.song2由實際資源id-s – cyanide 2013-04-09 11:08:43