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


216

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을 호출하고 싶습니다.


문제를 지정할 수 있습니까? 왜 그걸 원해? 일부 코드가 실행되도록 하시겠습니까?
Vladimir Ivanov

예, 버튼 클릭에 대해 코드가 실행되도록 트리거하고 싶습니다.
sam

답변:


445

더 좋은 방법이 있습니다.

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();

2
그러나 View for Android의 뒤로 버튼은 무엇입니까?
피터 아지 타이

4
휴대 전화의 뒤로 버튼에 대한 "보기"가 없습니다. 버튼을 누르려면 키 리스너를 사용해야합니다. 그것은 전혀 다른 문제입니다.
moonlightcheese

3
@moon-댓글에 사람들에게 알리려면 "@"로 시작하고 알리려는 사용자의 처음 몇 글자로 시작하십시오 .... not)
Peter Ajtai

14
이 답변에 표시된 코드는 약간 혼란 스럽습니다. 명확히하기 위해 View에는 정적 performClick () 메서드가 없습니다. View 인스턴스에서 performClick ()을 호출해야합니다.
Łukasz Wiklendt

3
당신이하고있는 일을 모르는 경우에만 혼란 스럽습니다.
moonlightcheese

52

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

buttonName.performClick();

12

이 방법으로 할 수 있습니다

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

7

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


7

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

button.performClick();

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

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

그게 다야.


6

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


4

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.