问题
I want to use existing onClick method to make my program simpler. It consists of onClick method and other method:
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.button1:
....
break;
}
}
void foo(){
....
onClick(????);
}
Is there any way to make it do the same behaviour like when i click it on the phone?
回答1:
you can use View.performClick()
reference
回答2:
performClick() will play a sound just like if the user clicked on that view, therefore in most cases it's better to use callOnClick(), which will call the OnClickListener without playing any click sound. (Available since API level 15)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) myView.callOnClick(); //won't play sound
else myView.performClick(); //will play sound
回答3:
public class DemoActivity extends AppCompatActivity implements View.OnClickListener{
Button mBtnAutomaticClick;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_report_bug);
mBtnAutomaticClick = findViewById(R.id.automatic_click_demo);
mBtnAutomaticClick.setOnClickListener(this);
mBtnAutomaticClick.performClick(); // for automatic click event
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.automatic_click_demo:
// your code
break;
}
}
When activity will call your code which you have written inside onClick will be called automatically.
来源:https://stackoverflow.com/questions/16732398/android-call-onclick-method-without-clicking