나는 (다른 것들 중에서) ScrollView를 포함하는 Android에서 복합 컨트롤을 빌드하려고합니다. 문제는 Eclipse에서 컨트롤을 보려고 할 때 오류가 발생합니다. "Parser가 BridgeXmlBlockParser가 아닙니다."라는 오류 메시지가 표시되면 NullPointerException이 발생합니다.프로그래밍 방식으로 android의 사용자 정의 컴포넌트에서 scrollview (s) 만들기
스택 트레이스 : 전달 된 attrs
인수가 null
때 Context.obtainStyledAttributes()
호출이 null
를 반환하기 때문에 NPE가 발생합니다
- :
java.lang.NullPointerException at android.view.View.<init>(View.java:1720) at android.view.ViewGroup.<init>(ViewGroup.java:277) at android.widget.FrameLayout.<init>(FrameLayout.java:83) at android.widget.ScrollView.<init>(ScrollView.java:128) at android.widget.ScrollView.<init>(ScrollView.java:124) at android.widget.ScrollView.<init>(ScrollView.java:120) at my.compound.control.StringPicker.onMeasure(StringPicker.java:46) ...
나는 다음과 같은 조건에 오류를 추적했습니다.
- 이는
attrs
이BridgeXmlBlockParser
의 인스턴스가 될 것으로 예상하는 Eclipse에 사용 된BridgeContext
구현에만 적용됩니다. - (Context) 생성자를 사용하여 ScrollView를 만들기 때문에
attrs
인수는null
입니다.
내가 이클립스는 복합 형의 컨트롤을 구성 할 때받는 attrs
을 통과 물론 해결 방법이 있습니다,하지만 난 내 내부 통제에 적용 할 복합 형의 컨트롤에 설정된 모든 속성을 원하지 않는다.
내가 잘못하고있는 것은 Android Eclipse에서 버그입니까?
이
은 my.compound.control.StringPicker.onMeasure의 모습입니다 (제거 그 선명도에 대한 비트) :@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (this.getChildCount() != requestedLength) {
this.removeAllViews();
int childWidth = getWidth()/requestedLength;
int childHeight = getHeight();
for (int i = 0; i < requestedLength; i++) {
ScrollView child = new ScrollView(getContext()); // NPE here
child.setLayoutParams(new LayoutParams(childWidth, childHeight));
addView(child);
}
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
my.compound.control.StringPicker.onMeasure에서 어떻게 작성했는지 보여 주시겠습니까? 그렇지 않으면 무엇이 잘못되었는지 말할 수 없습니다. –
도움이 되었으면 좋겠습니다. – beetstra
46 번째 줄은 무엇입니까? 그리고 물건을 벗으면, 우리는 무엇이 잘못되었는지 보지 못할 수도 있습니다. – CrackerJack9