创建布局后,我希望自动单击一个按钮并使用button.performClick()
它。
问题是它不起作用。看起来我在这个onCreate, onStart, onResume
方法中不能这样做。按钮及其事件是在什么时候创建的,所以我可以单击它?
这
@Override
protected void onResume() {
super.onResume();
mybutton.performClick();
}
不起作用。
创建布局后,我希望自动单击一个按钮并使用button.performClick()
它。
问题是它不起作用。看起来我在这个onCreate, onStart, onResume
方法中不能这样做。按钮及其事件是在什么时候创建的,所以我可以单击它?
这
@Override
protected void onResume() {
super.onResume();
mybutton.performClick();
}
不起作用。
这在类似的情况下对我有用:
mybutton.post(new Runnable(){
@Override
public void run() {
mybutton.performClick();
}
});
这样,只有当按钮已经加载到布局上时,runnable 才会运行。
您需要使用ViewTreeObserver:
ViewTreeObserver vto = mybutton.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
vto.removeOnGlobalLayoutListener(this);
mybutton.performClick();
}
});
我闻到了什么,似乎您忘记将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();
}
它成功显示了一个对话框!
@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
}