2017-07-20 58 views
0

問題是這些代碼行不重複。handler.postDelayed每秒不運行

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

我希望代碼每秒重複一次,但它只在程序啓動後每秒重複一次。後期延期只應該運行一次。如果是這樣,我將使用哪種方法來運行每秒而不是一次。

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); 
} 






} 

回答

2

儘量把handler.postDelayed(這一點,1000)顯示(計數器,myTextView)這樣的:

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