【问题标题】:Perform click on button in Android SDK在 Android SDK 中执行单击按钮
【发布时间】:2013-02-19 22:14:51
【问题描述】:

一旦创建了布局,我希望自动单击一个按钮,为此我使用button.performClick()

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

这个

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

没用。

【问题讨论】:

  • 您确定setContentView()findViewById()setOnClickListener()performClick() 不起作用吗?我只是好奇!
  • 他们工作。按钮只是没有被点击,但我没有收到任何错误

标签: android button automation click


【解决方案1】:

您需要使用ViewTreeObserver:

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

【讨论】:

  • 如果我要在具有 API>16 的设备上进行测试,那将是一个不错的选择
【解决方案2】:

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

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

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

【讨论】:

  • 我喜欢可运行的帖子,但事实证明 OP 做错了 -.-
【解决方案3】:
@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
}

【讨论】:

  • 有趣的是他问了一个问题中的答案:)
【解决方案4】:

我闻到的味道,好像你忘记在你的视图中添加onClicklistner,我测试了你的方式,它的工作正常, 我做了如下的事情:

全局定义按钮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();
    }

它成功显示了一个对话框!

【讨论】:

  • 是的,我使用的是 setOnTouchListener 而不是 setOnClickListener。谢谢
猜你喜欢
  • 1970-01-01
  • 2015-07-18
  • 2021-06-04
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
  • 2021-06-14
  • 2021-03-13
相关资源
最近更新 更多