2017-07-20 7 views
0

Das Problem/die Frage ist, dass diese Codezeilen arent wiederholen.handler.postDelayed läuft nicht jede Sekunde

handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      Counter+= ButtonCounter(Counter); 
      Counter+= AutoCounter(Counter, add); 
      Display(Counter, myTextView); 
     } 
    },1000); 

Ich möchte, dass der Code jede Sekunde wiederholt wird, aber er wird nur einmal pro Sekunde nach dem Programmstart wiederholt. Soll das postdelayed nur einmal ausgeführt werden? Wenn ja, welche Methode würde ich verwenden, um jede Sekunde anstatt nur einmal auszuführen?

package com.example.navjeevenmann.mytycoon; 

import android.content.Intent; 
import android.os.Bundle; 
import android.os.Handler; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 


public class MainActivity extends AppCompatActivity { 
private Button myButton; 
private int Counter = 0; 
private Button myButton2; 
private TextView myTextView; 
Handler handler = new Handler(); 
private int add = 0; 
private int timer = 1000; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    myButton = (Button) findViewById(R.id.button); 
    myButton2 = (Button) findViewById(R.id.button2); 
    myTextView = (TextView) findViewById(R.id.textView); 
    myButton.setOnClickListener(new View.OnClickListener() { 
     @Override 

     public void onClick(View view) { 
     } 
    }); 
    myButton2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent intent = new Intent(getApplicationContext(), SecondActivity.class); 
      intent.putExtra("Count", Counter); 
      startActivity(intent); 
      finish(); 
     } 

    }); 

    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      Counter+= ButtonCounter(Counter); 
      Counter+= AutoCounter(Counter, add); 
      Display(Counter, myTextView); 
     } 
    },1000); } 

public int ButtonCounter(int Counter) { 
    Counter += 1; 
    return Counter; 
} 

public int AutoCounter(int Counter, int add) { 
    Counter += add; 
    return Counter; 
} 

public void Display(int Counter, TextView myTextView) { 
    String man = String.valueOf(Counter); 
    myTextView.setText("$" + man); 
} 






} 

Antwort

2

try handler.postDelayed (dieses, 1000) nach Display (Zähler, myTextView) wie folgt zu setzen:

handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     Counter+= ButtonCounter(Counter); 
     Counter+= AutoCounter(Counter, add); 
     Display(Counter, myTextView); 
     handler.postDelayed(this, 1000); 
    } 
},1000); } 
Verwandte Themen