2011-11-16 3 views
0

다음과 같은 XML 레이아웃이 있습니다.안드로이드 : XML에서 onClick() 멤버 메소드 지정하기?

<LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:onClick="myButton.performClick" /> 

myButton은이 액티비티의 멤버입니다. 여기 클래스 멤버 메서드를 사용할 수 있습니까?

답변

0

docs이 (강조 광산을) 말하는대로 아니오 :

당신이 공공 무효의 sayHello (보기 V)를 선언해야합니다 컨텍스트의 방법 (일반적으로, 당신의 활동)

필드에서 메서드를 실행하려면 원하는대로 래핑 할 수 있습니다.

<LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:onClick="performClick" /> 
다음

:

public void performClick(View view) { 
    myButton.performClick(view); 
} 

하지만 거의 (일을 더 간결하게)을 XML onClick 속성의 목적을 패배. 어쨌든 performClick이 귀하의 버튼 대신에 표시되어야하는 좋은 이유가 있습니까?

마지막으로 LinearLayout에서이 작업을 수행하는 것이 좋습니다. 이 속성은 모두 Views에서 지원됩니다.

+0

포맷팅을 위해 레이아웃 안에 버튼이 있습니다. 레이아웃의 아무 곳이나 클릭하면 버튼도 트리거됩니다. – Dex

0

onClick은 선형 레이아웃 태그에 포함되지 않습니다. 클릭 한 번으로 설정하려는 버튼의 태그로 이동합니다.

그래서 당신은 이런 식으로 작업을 수행합니다

<LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     /> 

    <Button 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:onClick="methodName"/> 

</LinearLayout> 
+0

하지만 올바른 레이아웃을 위해 onClick을 설정하는 것이 맞습니까? 기본적으로 내가 얻는 것은 onClick in XML에서 클래스 멤버에 대한 메서드를 지정할 수 있습니까? android : onClick = "someMember.methodName"할 수있는 방법이 있습니까? – Dex

1

이 가능한 사용이 여기에 클래스 멤버 방법?

API에 따르면. The API says :

뷰를 클릭 할 때 호출 할이 뷰 컨텍스트의 메서드 이름입니다. 이 이름은 View 유형의 매개 변수 하나만 사용하는 공용 메소드와 일치해야합니다.

관련 문제