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

时间:2016-02-29 19:57:06

标签: java android mobile

我有一个小型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);
        } 
    }); 
}

3 个答案:

答案 0 :(得分:6)

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

要做你想做的事,你真的不需要另一个线程。您可以使用Handler和延迟Runnable,如下所示。

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

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();
                getLocationOnClick();
            }
        }
    };
    timer.start();
} catch (NotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
}

将按钮单击方法更改为这样 -

public void getLocationOnClick(View v) {
     Intent i = new Intent(TestButton2.this, LocationView.class);
     startActivity(i);
    } 

在Button的xml中添加onClick属性 -

 <Button
        android:id="@+id/btnid"
        android:onClick="getLocationOnClick"
        .... >