2014-02-19 4 views
0

На фрагменте у меня есть набор кнопок, которые воспроизводят звуки.MediaPlayer Stop code - Где положить?

У меня есть ScrollView и кнопка в LinearLayout, которая застряла в нижней части экрана.

Я застрял на том, где ввести код, который будет гарантировать, что на кнопке нажмите mediaplayer.

Это мой файл SoundsFragment.java, на котором будет размещен код, а моя кнопка называется button_stop. Я уже назвал слушателя для этого, как вы можете видеть, я просто не знаю, где разместить код остановки медиаплеера.

Если бы вы могли отредактировать этот код или предоставить пример, который был бы блестящим, чтобы я мог лучше понять java-макет.

package /example/; 

import android.app.Fragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.app.Activity; 
import android.media.AudioManager; 
import android.media.MediaPlayer; 
import android.view.Menu; 
import android.view.View.OnClickListener; 
import android.widget.Button; 


public class SoundsFragment extends Fragment implements OnClickListener { 

    private static MediaPlayer mp = null; 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.fragment_sounds, container, false); 
     Button button1=(Button)rootView.findViewById(R.id.button_1); 
     Button button2=(Button)rootView.findViewById(R.id.button_2); 
     Button button_stop=(Button)rootView.findViewById(R.id.button_stop); 
     button1.setOnClickListener(this); 
     button2.setOnClickListener(this); 
     button_stop.setOnClickListener(this); 

     return rootView; 
    } 

    public void onClick(View v) { 
    int resId; 
    switch (v.getId()) { 
    case R.id.button_1: 
     resId = R.raw.a; 
     break; 
    case R.id.button_2: 
     resId = R.raw.b; 
     break; 
    default: 
     resId = R.raw.a; 
     break; 
    } 
    // Release any resources from previous MediaPlayer 
    if (mp != null) { 
     mp.release(); 
    } 
    // Create a new MediaPlayer to play this sound 
    mp = MediaPlayer.create(getActivity(), resId); 
    mp.setLooping(true); 
    mp.start(); 
    } 

    @Override 
    public void onDestroy() { 
     if(null!=mp){ 
    mp.release(); 
     } 
     super.onDestroy(); 
    } 
} 

ответ

0

Вам может понадобиться просто создать другой onClickListener для button_stop после объявить:

button_stop.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       mp.stop(); 
      } 
     }); 

Я не уверен, если он будет по-прежнему вызывает функцию по умолчанию OnClick(). Если это так, вы можете создать отдельную функцию для вызова всякий раз, когда нажимается кнопка, отличная от кнопки button_stop:

+0

Спасибо Tyler, похоже, что он работает точно так же, как должен! Первоначально я не мог работать, создавая отдельную функцию, используя тот же шаблон, что и другие кнопки, которые не работают. – rossd

Смежные вопросы