Android call onClick method without Clicking

2019-05-03 09:01发布

问题:

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.