因此,我正在阅读Big Nerd
Ranch的Android编程书,并且有一个通过MediaPLayer播放的音频文件。我还有一个按钮,可以播放和暂停音频。如果按播放按钮播放音频,则按钮上的文本将变为“暂停”。问题在于音频结束后,按钮仍显示“暂停”,因此用户必须按两次按钮才能再次播放音频。我如何获得将其文本更改为“音频结束后立即播放”的按钮
这是我的代码减去按钮的布局xml
片段类:
public class HelloMoonFragment extends Fragment {
private Button mPlayButton;
private Button mStopButton;
private AudioPlayer mPlayer = new AudioPlayer();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_hello_moon, parent, false);
mPlayButton = (Button)v.findViewById(R.id.hellomoon_playButton);
mPlayButton.setText("Play");
mPlayButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
if(mPlayButton.getText().equals("Play")) {
mPlayButton.setText("Pause");
mPlayer.play(getActivity());
}
else if(mPlayButton.getText().equals("Pause")){
mPlayButton.setText("Play");
mPlayer.pause();
}
}
});
mStopButton = (Button)v.findViewById(R.id.hellomoon_stopButton);
mStopButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mPlayer.stop();
mPlayButton.setText("Play");
}
});
return v;
}
@Override
public void onDestroy() {
super.onDestroy();
mPlayer.stop();
}
}
MediaPlayer类:
package com.bignerdranch.android.hellomoon;
import android.content.Context;
import android.media.MediaPlayer;
public class AudioPlayer {
private MediaPlayer mPlayer;
private boolean mCompleted = false;
public void stop() {
if (mPlayer != null) {
mPlayer.release();
mPlayer = null;
}
}
public void play(Context c) {
if(mPlayer == null) {
mPlayer = MediaPlayer.create(c, R.raw.one_small_step);
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
stop();
mCompleted = true;
}
});
}
mPlayer.start();
}
public void pause() {
if(mPlayer != null) mPlayer.pause();
}
}
如果MediaPlayer
直接在活动上使用该类,则可以使用其OnCompletionListener
来检测媒体是否停止播放。在其中,OnCompletionListener
您可以将按钮的文本从“暂停”切换为“播放”,如下所示:
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mPlayButton.setText("Play");
}
});
我将您的AudioPlayer集成到片段中,使其看起来像:
public class HelloMoonFragment extends Fragment {
private Button mPlayButton;
private Button mStopButton;
private MediaPlayer mPlayer;
private boolean mCompleted = false;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_hello_moon, parent, false);
mPlayButton = (Button) v.findViewById(R.id.hellomoon_playButton);
mPlayButton.setText("Play");
mPlayButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
if(mPlayer == null) {
mPlayer = MediaPlayer.create(c, R.raw.one_small_step);
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
stopMediaPlayer();
mPlayButton.setText("Play");
}
});
}
if(mPlayButton.getText().equals("Play")) {
mPlayButton.setText("Pause");
mPlayer.start();
}
else if(mPlayButton.getText().equals("Pause")){
mPlayButton.setText("Play");
mPlayer.pause();
}
}
});
mStopButton = (Button)v.findViewById(R.id.hellomoon_stopButton);
mStopButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
stopMediaPlayer();
mPlayButton.setText("Play");
}
});
return v;
}
@Override
public void onDestroy() {
stopMediaPlayer();
super.onDestroy();
}
public void stopMediaPlayer() {
if (mPlayer != null) {
mPlayer.release();
mPlayer = null;
}
}
}
问题内容: 在HTML中,我通过此代码创建一个音频按钮 它可以正常工作,但是在reactjs中,我在下面使用三个文件,并且该文件与html具有相同的路径,但是代码无法正常工作,因此我得到了一个空白网站。对不起,我的英语不好。index.html Test.js index.js 问题答案: 在反应期望功能。但是,当您这样做时,它会返回一个值。将onClick定义更改为 码: 例如,您还需要一个捆绑
问题内容: 当我单击按钮时,我希望值更改为从。 HTML: Javascript: 该按钮现在正在显示打开的窗帘,我希望将其更改为关闭窗帘,对吗? 问题答案: 如果我已正确理解您的问题,则希望在“打开窗帘”和“关闭窗帘”之间切换-如果关闭,则切换为“打开窗帘”,反之亦然。如果那是您需要的,那么它将起作用。 请注意,您不需要使用内部更改,因为它是在 上下文 中调用的-我所说的 上下文 是指您稍后会在
问题内容: 我正在使用新的jquery mobile 1.0 alpha 1版本来构建移动应用程序,我需要能够切换按钮的文本。切换文本效果很好,但是一旦执行文本替换,css格式就会被破坏。 问题答案: 创建按钮时,它会添加一些其他元素,例如一些内部元素,如下所示: 要更改文本,您需要以下选择器:
问题内容: [编辑]经过大量挖掘,我发现问题出在我如何将CKEditor集成到页面中。如公认的答案所述,在这种情况下,简单而明显的方法 确实 有效。 你好 在按下“提交”按钮之后,但在实际提交之前,我需要更改表单的值。 我尝试挂钩到表单的“ submit”事件,并在那里手动更改文本字段的值,但是看起来实际上并没有更改提交的值。 有任何想法吗? 问题答案: 我对您的说法感到奇怪,即处理程序对您不起作
在我的应用程序中,我使用动作栏和导航抽屉。操作栏中有一个按钮用于打开和关闭导航抽屉。我想把它的颜色改成红色。我该怎么做?
如何更改searchview中黑色箭头(后退按钮)的颜色,我已尝试使用以下代码进行自定义 但它不起作用