2014-12-19 3 views
1

자바에서 프로젝트를 빌드합니다.이 프로젝트는 앱의 페이지에 smali 코드가 있다고 가정하고이 페이지의 레이아웃에있는 모든 버튼을 반환합니다.앱 페이지의 모든 버튼 얻기

먼저 적절한 xml 파일에 대한 구문 분석기를 구현했습니다. 파서는 페이지의 모든 버튼을 검색합니다. 제대로 작동합니다.

그러나 smali 코드가 동적으로 페이지 레이아웃에 단추를 추가 할 수 있기 때문에 문제가 있습니다. 내가 smali 파일에 대한 파서를 구현하는 줄 알았지 만 그렇게 생각하지 않습니다.

나는 2 개 아이디어를 가지고 있지만, 적용 할 수 있는지 알고 donwt :

1) 방법에서 onCreate에서 실행하고, 동시에 XML 파일에 뷰를 추가 할 수 있습니다. 그 후, 나는 페이지 레이아웃에서 전체보기를했습니다.

2) 페이지의 뷰 계층 구조를 반환하는 UI 계층 구조를 사용합니다. 그러나 어떻게 프로그래밍 방식으로 사용하고 편안하게 사용하는지 모르겠습니다.

덕분에, Yinon

답변

1

실행이 당신의 activitie (또는 조각의) 뷰 그룹의 모든 버튼에 mButtons에있을 것입니다.

List<Button> mButtons = new ArrayList(); 

void getAllButtons(ViewGroup v) { 
    for (int i = 0; i < v.getChildCount(); i++) { 
    View child = v.getChildAt(i); 
    if(child instanceof ViewGroup) 
     getAllButtons((ViewGroup)child); 
    else if(child instanceof Button) 
     mButtons.add((Button)child); 
    } 
} 
+0

내 프로젝트가 외부에 있더라도 사용할 수 있습니까? apk를 디 컴파일하여 모든 활동을 통과하고 버튼을 가져와야합니다. –

+0

필요한 모든 것은 ViewGroup입니다. – grig