在片段上,我有一系列播放声音的按钮。
我有一个ScrollView和一个位于屏幕底部的LinearLayout中的按钮。
我被困在哪里输入代码,以确保按钮按下媒体播放器停止。
这是我将托管代码的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 :(得分:0)
您可能需要在声明后为button_stop创建一个不同的onClickListener:
button_stop.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mp.stop();
}
});
我不确定它是否仍会调用默认的onClick()函数。如果是这样,只要按下button_stop以外的按钮,就可以创建一个单独的函数来调用:
public void onClick(View v) {
int resId;
switch (v.getId()) {
case R.id.button_1:
startMediaPlayer(R.raw.a);
break;
case R.id.button_2:
startMediaPlayer(R.raw.b);
break;
case R.id.button_stop:
mp.stop();
break;
default:
startMediaPlayer(R.raw.a);
break;
}
}
public void startMediaPlayer(int resId){
// 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();
}