2016-12-10 4 views
0

Ich habe einen Code geschrieben, der auf die Elementansicht der Listenansicht reagiert. Ich beabsichtigte, dass das angeklickte Element in der Liste den URI der Medienquelle über die Nachricht Toast zurückgeben und mit dem Abspielen beginnen würde.Android: OnItemClickListener funktioniert nicht so, wie ich es erwartet habe

Hier ist der Code.

lvAlarmTones.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 
     ringtone = ringtoneSources.get(position); 
     Uri toneUri = Uri.parse(ringtone); 
     mediaPlayer = new MediaPlayer(); 
     try { 
      mediaPlayer.setDataSource(ChooseAlarmToneActivity.this, toneUri); 
      mediaPlayer.start(); 
      Log.i(ApplicationManager.LOG, "Media loaded: " + ringtone); 

     } catch (IOException e) { 
      Toast.makeText(ChooseAlarmToneActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show(); 
     } 
     Toast.makeText(ChooseAlarmToneActivity.this, ringtone, Toast.LENGTH_SHORT).show(); 
    } 
}); 

Wenn ich diesen Code ausführen, schaffe ich das Toast mit dem URI erfolgreich zu bekommen, aber ich kann nicht noch die Medien gespielt haben.

+0

statt jedes Mal Mediaplayer zu schaffen, schaffen eine als globales und es für jedes Element klicken verwenden. Versuchen Sie, den Toast in das Try-Block-Ende zu legen. und renne wieder – Noorul

+0

@Ahamed Alles klar, ich habe den Code geändert, den du gesagt hast. Aber ich kann immer noch nicht die Medien spielen. –

+0

haben Sie einen LogCat-Fehler. bitte posten Sie wenn ja. – Noorul

Antwort

0

Ich löste das Problem durch Modifizieren der Code wie folgt zu behandeln.

lvAlarmTones.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 
      ringtone = ringtoneSources.get(position); 
      Uri toneUri = Uri.parse(ringtone); 

      if(mediaPlayer != null) { 
       mediaPlayer.stop(); 
       mediaPlayer.release(); 
      } 
      mediaPlayer = MediaPlayer.create(ChooseAlarmToneActivity.this, toneUri); 
      mediaPlayer.start(); 
      Toast.makeText(ChooseAlarmToneActivity.this, ringtone, Toast.LENGTH_SHORT).show(); 
     } 
    }); 
0

Es bedeutet, dass Ihr Klick-Listener kein Problem hat, aber etwas in der Ausführung des Media Player-Codes falsch ist.

mediaPlayer = new MediaPlayer(); 
      try { 
       mediaPlayer.setDataSource(ChooseAlarmToneActivity.this, toneUri); 
       mediaPlayer.start(); 
       Log.i(ApplicationManager.LOG, "Media loaded: " + ringtone); 

      } catch (IOException e) { 
       Toast.makeText(ChooseAlarmToneActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show(); 
      } 

Überprüfen Sie Ihren Fang Ausnahme Sie einen Fehler finden, und ich dringend empfohlen, Fehler Verwendung OnErrorListener

Verwandte Themen