2014-01-17 4 views
0

현재 활동에서 뷰의 뷰 (다른 활동에 속함)의 높이와 너비를 가져 오는 방법은 무엇입니까? 예를 들면. aactivity one에 버튼이 있고 이드의 도움으로 activity 2에서 teh 버튼의 속성을 얻어야합니다. (ImageView, TextView, WebView 또는 기타 일 수 있기 때문에 뷰를 고려했습니다.)보기의 높이와 너비를 얻는 방법은 무엇입니까?

여기 제가 시도한 코드를 붙여 넣습니다.

공용 클래스 SecAct이 활동 {

ArrayList<Integer> butList1; 
RelativeLayout help; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_two); 
    help = (RelativeLayout)findViewById(R.id.helplay); 
    createWidgets(); 
} 

private void createWidgets() { 
    // TODO Auto-generated method stub 
    butList1=MainActivity.butList; 
    int a=butList1.get(0); 
    View v=(View)(findViewById(a)); 
    int width=v.getWidth(); 
    int height=v.getHeight(); 
    help.addView(v); 
    System.out.println("id is "+ width); 
} 

public void close(View v){ 
    finish(); 
} 

}

가 나는의 가치를 얻을 수 있어요 확장하지만 난 V의 속성을 얻을 수 아니다 (보기) 즉, 높이, 너비 또는 아이디 등 null 포인터 예외가 발생합니다.

+0

정확히 ** NPE ** ?? 줄 번호 ?? –

+0

왜 마지막 활동에서 뷰의 높이를 가져와야합니까 ?? –

+0

'보기 v'는'null'이어야합니다. 확인하십시오 – R9J

답변

1

처음처럼 :

int width = DISIRED_VIEW.getWidth(); 
int height = DISIRED_VIEW .getHeight(); 

어쩌면 이 값 (폭 및 높이)은 0 일 수 있으므로 수행해야합니다.

final int width, height; 
DISIRED_VIEW.post(new Runnable() { 

    @Override 
    public void run() { 
     width = DISIRED_VIEW.getWidth(); 
     height = DISIRED_VIEW.getHeight(); 
    } 
}); 
+0

마법처럼 작동합니다. 대단히 감사합니다. –

0

getMeasuredHeight() 방법을 시도하면 butList1 당신의 ArrayList를 초기화하지 않은 beacause를

+0

@Kuni yeah 나는 그것을 시도했지만 널 포인터 예외를 보여주고있다. –

+0

@BaradwajAryasomayajula 비슷한 질문 확인 [link] (http://stackoverflow.com/questions/4142090/how-do-you-to-retrieve-dimensions-of-a-view-getheight-and-getwidth-always-r) 문제를 해결하는 데 도움이 될 수 있습니다. – Kunu

0

당신은 널 포인터 예외를 얻고있다. 초기화하고 항목을 추가 한 다음 사용하십시오. 상기 다른 활동에서

public static Context con; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_one); 
    con = this; 
} 

그런 :,

Context context = FIRST_ACTIVITY.con; 
Activity firstActivy = (Activity) context; 
ViewGroup firstActivityView = firstActivy.getWindow().getDecorView().findViewById(android.R.id.content); 
View DISIRED_VIEW = firstActivityView.findViewById(R.id.DISIRED_VIEW_ID); 

마지막으로 얻을 폭과 높이 this- 예를 들어, 뷰의 활동에서 컨텍스트를 얻을

butList1 = new ArrayList<Integer>(); 
butList1.add(findviewById(R.id.button_id)); 
+0

butList1 및 createwidgets() 함수에서 초기화하는 방법은 초기화하지 않아도됩니다. 그래서 나는 그것이 오류가 아니라고 생각합니다. –

관련 문제