如何使java等待x秒然后执行

时间:2017-06-08 19:49:36

标签: java android xml

我制作应用程序,我会遇到一个我无法解决的问题。 我正在使用Android Studio,我需要制作一个我已经制作的Button。它已经做了更多。我希望它在显示文本后也关闭应用程序。你知道我应该如何编程吗?这将非常有帮助。提前谢谢。

这是Java代码:

package test.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void buttonOnClick(View v) {
    Button button=(Button) v;
    ((Button) v).setText("Correct");
}


public void buttonAnClick(View q) {
    Button button=(Button) q;
    ((Button) q).setText("Niet goed");
}

}

所以我已经用XML创建了按钮并告诉它:

机器人:的onClick =" buttonOnClick"

希望你能帮助我!

6 个答案:

答案 0 :(得分:3)

如果您希望之后发生一些事情,那么您需要的是:

        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            public void run() {
                //What you want to happen later
            }
        }, 1500); //1500 = 1.5 seconds, time in milli before it happens.

将它放在按钮的方法中。

如果您想关闭应用,请致电

      finish();

完成关闭当前活动。如果你在堆栈上有其他活动,你会回到它们,但由于你可能只有1,它应该带你出去。

答案 1 :(得分:0)

查看CountDownTimer

CountDownTimer(30000, 1000) {

             public void onTick(long millisUntilFinished) {
                 mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
             }

         public void onFinish() {
             mTextField.setText("done!");
         }
      }.start();

答案 2 :(得分:0)

如果您想暂停,请使用java.util.concurrent.TimeUnit

例如:

TimeUnit.SECONDS.sleep(1);

答案 3 :(得分:0)

如果您在按下按钮时尝试延迟完成某项操作,请执行以下操作:

public void buttonOnClick(View v) {
    Button button=(Button) v;
    button.setText("Correct");
    button.postDelayed(new Runnable(){
       public void run() {
           //runs after 1 second delay on UI thread
       }
    }, 1000L);
}

答案 4 :(得分:0)

只需将方法放入按钮点击功能

即可
public void buttonOnClick(View v) {
      //call method here
}

如果你想使用RxJava

Disposable di = Observable.timer(2, TimeUnit.SECONDS)
   .subscribe(timer->{
        //next action after 2 seconds
   },throwable->{
       // throw exception 
   });

摧毁一次性使用,di.dispose();

如果使用Runnable和Handler

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    public void run() {
         //next action after 2 seconds
    }
}, 2*1000);

停止使用处理程序,handler.removeCallbacksAndMessages(null);

答案 5 :(得分:0)

试试这个。

  func didBegin(_ contact: SKPhysicsContact) {

   print("collided!")

    if (contact.bodyA.categoryBitMask == PhysicsCatagory.enemy && contact.bodyB.categoryBitMask == PhysicsCatagory.player) {
        print("player and enemy!")
    }
    if (contact.bodyB.categoryBitMask == PhysicsCatagory.enemy && contact.bodyA.categoryBitMask == PhysicsCatagory.player) {
        print("player and enemy!")
    }
    if (contact.bodyA.categoryBitMask == PhysicsCatagory.neutral && contact.bodyB.categoryBitMask == PhysicsCatagory.player) {
        print("neutral and player!")    
    }
    if contact.bodyB.categoryBitMask == PhysicsCatagory.neutral && contact.bodyA.categoryBitMask == PhysicsCatagory.player{
        print("neutral and player")
    }          }