2016-12-10 1 views
0

목록보기의 항목을 클릭하면 응답하는 코드를 작성했습니다. 목록의 클릭 된 항목이 Toast 메시지를 통해 미디어 소스의 URI를 반환하고 재생을 시작하려고했습니다.Android : OnItemClickListener가 예상대로 작동하지 않습니다.

다음은 코드입니다. 이 코드를 실행하면

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

, 나는 성공적으로 URI와 Toast를 얻기 위해 관리하지만, 난 여전히 미디어가 재생이 실패합니다.

+0

mediaPlayer를 매번 만들지 말고 global로 만들고 모든 항목을 클릭 할 때마다 사용하십시오. 토스트를 try 블록 끝 안에 넣으십시오. 다시 실행하십시오 – Noorul

+0

@Ahamed 좋아, 내가 말한 코드를 변경했습니다. 그러나 나는 여전히 언론에 열중하고있다. –

+0

LogCat 오류가 발생했습니다. 그렇다면 친절하게 게시하십시오. – Noorul

답변

0

나는 다음과 같이 코드를 수정하여 문제를 해결을 처리하는 것이 좋습니다 당신의 캐치 예외를 확인합니다.

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

클릭 듣기에 미디어 플레이어 코드 실행에 문제가 없지만 잘못된 것이 있다는 의미입니다.

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

는 오류를 발견하고 난 강력 오류 사용 OnErrorListener

관련 문제