在Android SDK中执行单击按钮

时间:2013-03-05 13:29:08

标签: android button automation click

创建布局后,我想自动点击一个按钮,然后使用button.performClick()

问题在于它不起作用。看起来我在onCreate, onStart, onResume方法中无法做到这一点。按钮及其事件在什么时候创建,所以我可以点击它?

这个

@Override
protected void onResume() {
    super.onResume();
    mybutton.performClick();
}

不起作用。

4 个答案:

答案 0 :(得分:23)

在类似情况下,这对我有用:

mybutton.post(new Runnable(){
            @Override
            public void run() {
                 mybutton.performClick();
            }
});

这样,只有在布局上已加载按钮时,runnable才会运行。

答案 1 :(得分:3)

我闻到了什么,似乎你忘记将onClicklistner添加到你的视图中,我测试了你的方式,它的工作正常, 我做了类似下面的事情:

全局定义Button Button btn;

onCreate()

btn=(Button)findViewById(R.id.button);
            btn.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {

                    dialog();
                }
            });

并在onResume()

@Override
    protected void onResume() {

        btn.performClick();
        super.onResume();
    }

成功显示对话框!

答案 2 :(得分:2)

您需要使用ViewTreeObserver

    ViewTreeObserver vto = mybutton.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            vto.removeOnGlobalLayoutListener(this);
            mybutton.performClick();
        }
    });

答案 3 :(得分:0)

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mylayout);

    myButton = (Button) findViewById(R.id.myButton);
    myButton.setOnClickListener(this);
}


@Override
public void onStart() {
    myButton.performClick();
}

@Override
public void onClick(View v) {
    // DO STUFF
}