코드를 사용하여 버튼 클릭을 시뮬레이션하는 방법은 무엇입니까? /*Something Alarm

Android에서 코드를 사용하여 버튼 클릭 이벤트를 트리거하려면 어떻게해야합니까? 다른 이벤트가 발생하면 프로그래밍 방식으로 버튼 클릭을 트리거하고 싶습니다.

같은 문제가 있습니다.

public void onDateSelectedButtonClick(View v){
    /*Something  Alarm Management 
    http://www.java2s.com/Code/Android/Core-Class/Alarmdemo.htm
    copied code from this site*/
}

버튼 코드 :

<Button
    android:onClick="onDateSelectedButtonClick"
    android:text="Set notification for this date" />

하지만 OnClickEvent없이 해당 함수 OnLoadLayout을 호출하고 싶습니다.



답변

더 좋은 방법이 있습니다.

View.performClick();

http://developer.android.com/reference/android/view/View.html#performClick ()

이것은 모든 문제에 답해야합니다. Button, Spinner 등을 포함하여 모든 View는이 기능을 상속합니다.

명확히하기 위해 View에는 정적 performClick () 메서드가 없습니다. View 인스턴스에서 performClick ()을 호출해야합니다. 예를 들어 전화를 걸 수는 없습니다

View.performClick();

대신 다음과 같은 작업을 수행하십시오.

View myView = findViewById(R.id.myview);
myView.performClick();


답변

moonlightcheese가 말한 것을 명확히하기 위해 : Android의 코드를 통해 버튼 클릭 이벤트를 트리거하려면 다음을 제공하십시오.

buttonName.performClick();


답변

이 방법으로 할 수 있습니다

private Button btn;
btn = (Button)findViewById(R.id.button2);
btn.performClick();


답변

안드로이드 callOnClick()( API 15에 추가됨 )가 때로는 내 경험보다 낫습니다 performClick(). 사용자가 선택 음이 활성화 된 경우, 사용자가 performClick()서로 약간 겹쳐서 두 개의 연속적인 선택 음이 들릴 수 있습니다. (사용자의 첫 번째 버튼 클릭에 대한 하나의 선택 사운드, OnClickListener코드를 통해 호출 하는 다른 버튼에 대한 선택 사운드 )


답변

이 간단한 코드 줄을 작성하십시오.

button.performClick();

여기서 button은 Button 클래스의 참조 변수이며 다음과 같이 정의됩니다.

private Button buttonToday ;
buttonToday = (Button) findViewById(R.id.buttonToday);

그게 다야.


답변

API15부터는 callOnClick()연결된보기 OnClickListener를 직접 호출 하는 것도 사용할 수 있습니다 . performClick ()과 달리 리스너 만 호출하며 액세스 가능성 이벤트보고와 같은 연관된 클릭 조치는 수행하지 않습니다.


답변

sender인수를 사용하지 않는 경우 버튼 핸들러 구현을 리팩터링하여 함수를 분리하고 원하는 곳 (버튼 핸들러 및 다른 곳)에서 호출하십시오.

어쨌든, 그것은 더 좋고 깔끔한 디자인입니다-버튼 핸들러에서 호출 해야하는 코드이며 다른 곳에서 함수를 리팩토링해야합니다. 또한 UI 처리를 응용 프로그램 논리 코드와 분리하는 데 도움이됩니다. onDateSelectedButtonClick ()뿐만 아니라 함수의 이름도 좋습니다.