如何在Android中每秒自动点击一个按钮

时间:2016-12-01 20:52:09

标签: java android button click

How to automatically Click a Button in Android after a 5 second delay

我尝试使用链接中输入的代码,但我的应用程序崩溃了 我的代码;

 public class MainActivity extends AppCompatActivity {
    Button button;
    TextView text;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        try {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            buttonClick();
            Thread timer = new Thread() {
                public void run() {
                    try {
                        sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    } finally {
                        button.performClick();

                    }
                }
            };
            timer.start();
        } catch (Resources.NotFoundException e) {
            e.printStackTrace();
        }
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                button.performClick();
            }
        }, 1000);

    }

    public void buttonClick() {
        button=(Button) findViewById(R.id.button);
        text=(TextView) findViewById(R.id.text);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Random s=new Random();
                int number=s.nextInt(3);
                switch (number)
                {case 1:text.setText("1");
                    break;
                    case 2: text.setText("2");
                        break;


                }
            }
        });

    }

}

Logcat Error

2 个答案:

答案 0 :(得分:0)

您需要使用

runOnUiThread(new Runnable() {
    @Override
    public void run() {
}
});

以避免此错误。

请检查Android "Only the original thread that created a view hierarchy can touch its views."

此外,您只需使用处理程序在指定的时间后执行按钮单击,无需使用计时器。

答案 1 :(得分:0)

这是每秒运行更简单的方法。你不需要触发按钮。只需调用您要执行的方法

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

        Handler handler = new Handler();

        Runnable runnable = new Runnable(){
            @Override
            public void run() {
                buttonClick();
                if(handler!=null)
                    handler.postDelayed(runnable, 1000);
            }
        }

        handler.postDelayed(runnable, 1000);

    }