Ich bin neu mit Android ... Ich entwickelte eine App, die Bilder durch Klicken auf eine Schaltfläche wechseln und ich ein Handler Runnable hinzufügen, um die Bilder automatisch Übergang (auch wenn Sie nicht auf die Schaltfläche drücken) mit einer Verzögerungszeit von 5000ms. aber ich muss den Handler für diese Verzögerung in dem Moment stoppen, in dem ich den Knopf drücke und das kann ich aus irgendeinem Grund nicht tun.Wie kann ich Runnable Handler in PostDelay stoppen
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);
und dies ist der Code für die Schaltfläche klicken
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();
...
Anruf 'handler.removeCallbacks (run)' um das 'Runnable' abzubrechen. – CommonsWare
aber ich füge es bereits in der if-Anweisung in der run() -Methode hinzu. handler.removeCallbacks (this); –
@CommonsWare aber ich füge es bereits in der if-Anweisung in der run() -Methode hinzu. 'handler.removeCallbacks (dies);' –