一旦创建布局,我希望一个按钮能够自动点击,并使用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();
}
});
你需要使用一个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
}
setContentView()
,findViewById()
,setOnClickListener()
和performClick()
操作无效吗?我只是好奇! - vault