2012-02-01 2 views
0

Android 플랫폼의 LWUIT 앱에서 기본 구성 요소를 사용하려고합니다. LWUIT에서 Android 네이티브 구성 요소를 사용할 때 IllegalArgumentException이 발생합니다.

mMainForm = new Form(); 
mMainForm.setLayout(new BoxLayout(BoxLayout.Y_AXIS)); 

mMainForm.addComponent(createNativeTextEdit()); 

mMainForm.show(); 

그럼 내가 얻을 :

private Component createNativeTextEdit() { 
    final Object[] result = new Object[1]; 

    AndroidImplementation.runOnAndroidUIThreadAndWait(LWUITActivity.currentActivity, new Runnable() { 
     @Override 
     public void run() { 
      EditText nativeView = new EditText(LWUITActivity.currentActivity); 
      nativeView.setText("Type here.."); 

      result[0] = PeerComponent.create(nativeView); 
     } 
    }); 

    return (Component)result[0]; 
} 

나는 다음 폼 내부에 구성 요소를 배치 "는 IllegalArgumentException : 폭과 높이가> 0이어야합니다"시스템이 새로운 형태를 그릴하려고 할 때.

AndroidImplementation.PeerWrapper.getBuffer()를 호출하면 문제가 추적되고 getWidth() 및 getHeight()가 반환하는 값은 width = 474 및 height = 0입니다.

신장은 어떻게 설정 되나요? 내가 뭘 놓치고 있니?

Android에서 PeerComponent를 사용하는 작동 예제 프로그램을 알고 계십니까? 나는 웹을 검색했지만 코드가 어디에서 호출되었는지 명확하지 않은 스 니펫을 찾을 수 있었다. 어떤 스레드가 실행되는지 등

고마워.

답변

1

문제점을 파악했습니다.

Android 용 LWUIT 1.5 thorsten_s 포트를 사용하고 있습니다.

문제 네이티브보기 때문에 폭과 높이 모두 0

하는 것이에서 PeerWrapper에 View.measure()를 호출한다 해결하는 방법을 설정 추가되기 전에 LWUIT 구성 요소를 적절한 사이즈를 계산한다는 것이다 생성 시간을 기본 크기로 초기화합니다.

측정 (MeasureSpec.makeMeasureSpec (0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec (0, MeasureSpec.UNSPECIFIED : PeerWrapper 클래스의 생성자의 끝에

내부 AndroidImplementation.java 줄을 추가));

이렇게하면 문제가 완전히 해결됩니다. 이제 LWUIT 양식에서 AnalogClock, DatePicker 및 네이티브 EditText와 같은 구성 요소를 사용할 수 있습니다.

0

이 종류의 것은 Codename One 구현에서 작동합니다. Thorsten의 항구에서 무슨 일이 일어나고 있는지 정확히 알기가 어렵습니다. 네이티브 위젯에 액세스 할 수있는 네이티브 액세스 데모를 통해 Codename One을 출시 할 예정입니다.

+0

감사합니다. 내가 항구에 손을 넣을 수있는 방법이 있습니까? 불행히도 나는 곧 해결책이 필요하다. 감사. –

관련 문제