如何在 5 秒延迟后自动单击 Android 中的按钮

新手上路,请多包涵

我有一个小型 Android 应用程序,它会在 5 秒后自动点击按钮。我用过 performClick(); 但这不起作用。当计时器归零时,它就会崩溃。

这是我的代码:

 protected void onCreate(Bundle savedInstanceState) {
    try {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.local);
        getActionBar().setIcon(R.drawable.menu_drop);

        buttonClick();

        Thread timer = new Thread(){
            public void run(){
                try{
                    sleep(5000);
                } catch (InterruptedException e){
                    e.printStackTrace();
                }finally{
                    button1.performClick();
                }
            }
        };
        timer.start();
    } catch (NotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public void buttonClick() {
    button1 = (Button) findViewById(R.id.button);
    button1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(TestButton2.this, LocationView.class);
            startActivity(i);
        }
    });
}

原文由 Coder1 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 447
2 个回答

您应该发布包含错误消息的 logcat,但一个问题可能是您正在访问 UI 线程之外的 UI 元素,这不是一个好主意。

做你想做的事你真的不需要另一个线程。您可以使用 Handler 和延迟的 Runnable 而不是像下面这样。

 new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        button1.performClick();
    }
}, 5000);

这将安排 Runnable 在 5 秒后在 UI 线程上执行。如果仍然崩溃,请从 logcat 发布堆栈跟踪。

原文由 George Mulligan 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 runOnUiThread() 方法。此方法运行您的 UI 线程方法

原文由 Amir Mohsenian 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题