当我在TextView
中设置文字时,其文字在转到correctCondition()
方法后会发生变化;但我想在转到correctCondition()
之前更改文字。
所以当我点击按钮时,TextView
会发生变化,然后运行进一步的操作。
我想播放声音“一”并同时显示文字“1”
这里我在
中添加了一些代码image1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (mClicked == false) {
mClicked = true;
count = count + 1;
numberWrite.setText("" + count);
one();
correctCondition();
}
}
});
private void one() {
Thread tr = new Thread(new Runnable() {
@Override
public void run() {
AssetFileDescriptor one;
try {
one = mActivity.getAssets().openFd(
"counting/one.mp3");
MediaPlayer counting = new MediaPlayer();
counting.setDataSource(one.getFileDescriptor(),
one.getStartOffset(), one.getLength());
one.close();
counting.prepare();
counting.setVolume(1f, 1f);
counting.start();
counting.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
tr.start();
}
public void playCorrectBeep() {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
MediaPlayer correctMp = new MediaPlayer();
try {
AssetFileDescriptor correct = mContext.getAssets().openFd(
"correct.mp3");
correctMp.setDataSource(correct.getFileDescriptor(),
correct.getStartOffset(),correct.getLength());
correct.close();
correctMp.prepare();
correctMp.start();
correctMp.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
t.start();
}
提前致谢
答案 0 :(得分:1)
您的交换机需要“中断”,请执行以下操作:
switch (v.getId()) {
case R.id.imageView1:
if (mClicked == false) {
mClicked = true;
count = count + 1;
numberWrite.setText(""+ count);
toast.cancel();
soundManager.one();
correctCondition();
}
break; // add this line
}
此外,你不应该让你的correctCondition()方法在UI-Thread上运行。而是让你的SoundManager.one();在一个单独的线程中运行。
public void one() {
Thread t = new Thread(new Runnable) {
public void run() {
counting = new MediaPlayer();
try {
counting.setDataSource(one.getFileDescriptor(), one.getStartOffset(), one.getLength());
one.close();
counting.prepare();
counting.setVolume(1f, 1f);
counting.start();
counting.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
};
t.start();
}