私はAndroidの新機能です...ボタンをクリックして画像をトランジションするアプリケーションを開発し、ハンドラランナブルを追加して、遅延時間は5000msです。私はボタンを押す瞬間にこの遅延のためにハンドラを停止しなければならず、何らかの理由でこれを行うことができません。postDelayでRunnable Handlerを停止するにはどうすればいいですか?
public class MainActivity extends AppCompatActivity {
private Integer images[]={R.drawable.pic1, R.drawable.pic21, ....
public int currImage=0;
public int ThreadCnt = 0;
public boolean backInt=true,forwardInc=false, ThreadInc=true;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
initializeImageSwitcher();
setInitialImage();
setImageRotateListener();
final Handler handler = new Handler();
final Runnable run = new Runnable() {
@Override
public void run() {
//forwardInc is a Boolean indicating that click button occurred
if(forwardInc){
//and in this case (of forwardInc=true) I want to stop runnable for 5sec
handler.removeCallbacks(this);
handler.postDelayed(this, 5000);
forwardInc=false;
setInitialImage();
setImageRotateListener();
currImage++;
ThreadCnt++;
}
handler.postDelayed(this, 5000);
}
};
handler.post(run);
、これはボタンのコードであなたが何をしようとして、まだ明確ではありません
public void setImageRotateListener() {
final Button rotatebutton=(Button) findViewById(R.id.btnRotateImage);
rotatebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currImage++;
//forwardInc indicating that click button occurred
forwardInc=true;
...
setCurrentImage();
...
コール 'handler.removeCallbacks(ラン)'実行可能なのrunメソッド内
その 'Runnable'をキャンセルします。 – CommonsWare
ですが、すでにrun()メソッドのif文に追加しています。 handler.removeCallbacks(this); –
@CommonsWareでは、すでにrun()メソッドのif文に追加しています。 'handler.removeCallbacks(this);' –