2013-04-08 4 views
0

У меня есть два вида действий. Play.java и Home.java, Home.java содержат функцию onclick для Listview и получают позицию listview Мне нужно передать эту позицию в Play.java.when i click listview "к сожалению, приложение закрыто"Android Raw Folder Media Player

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(); 
    } 
    } 

, когда я нажимаю песню из ListView ее не работает приложение Клоса ed

+2

StackTrace от LogCat ????? –

+1

, пожалуйста, просмотрите logcat и посмотрите, в чем проблема ... и поставьте этот логарифмический экран коротким. – Hemant

+0

напишите код оплаты в onCreate метод Play.class – Pinki

ответ

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: что именно вы хотите сделать –

+0

, когда я нажимаю имя песни в песне listview, должен играть из сырой папки и когда я ckick next next songs предыдущая песня shoud stop –

+0

Yo хотите изменить намерение или нет? –

0

Put слушать функцию в главном файле

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

Я использую код в эмуляторе, к сожалению приложение закрыто error –

+0

@PrabuJM: Приходите сюда http://chat.stackoverflow.com/rooms/27387/android-india –

0

LogCat должен принести свет для вас проблемы, но мы до сих пор не имеют.

Тогда зачем вам нужны mp и mp2? Выиграть сразу две песни?

У меня будет только одна заявленная mp, объявленная в классе, а не в методе, потому что в вашем случае refrence to mp2 player теряется после выхода из метода listen, и нет никакого способа его контролировать (на самом деле , он может даже перестать играть после выхода из метода).

Чтобы сделать короче говоря, это то, что я предлагаю:

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

Спасибо, сэр, сейчас я пробовал –

+0

показать ошибку на синтаксической ошибке songIndexIds –

+0

Заменить R .raw.song1 и R.raw.song2 по реальным ресурсам id-s – cyanide