创建布局后,我想自动点击一个按钮,然后使用button.performClick()
。
问题在于它不起作用。看起来我在onCreate, onStart, onResume
方法中无法做到这一点。按钮及其事件在什么时候创建,所以我可以点击它?
这个
@Override
protected void onResume() {
super.onResume();
mybutton.performClick();
}
不起作用。
答案 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
}