custom layout 작성할때 주의할점.
Posted 2010/08/18 12:53, Filed under: 나의 길/Androidlayout 을 임의로 만들어 사용할때가 있다.
해당 layout을 코드상에 불러다가 new 로 쓰면 별문제 없지만
그걸 layout 내에 포함시켜서 사용할때 문제점이 있어서 적어놓는다
main.xml
...
<com.simplelife.sample.IconView
...
...
</>
...
<com.simplelife.sample.IconView
...
...
</>
뭐.. 이런식으로 썼을때 보면
에러 유형 1.
E/AndroidRuntime( 1278): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 1278): Caused by: android.view.InflateException: Binary XML file line #36: Error inflating class com.simplelife.sample.IconView
E/AndroidRuntime( 1278): at android.view.LayoutInflater.createView(LayoutInflater.java:503)
E/AndroidRuntime( 1278): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
E/AndroidRuntime( 1278): at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
E/AndroidRuntime( 1278): at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
E/AndroidRuntime( 1278): at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
E/AndroidRuntime( 1278): at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
E/AndroidRuntime( 1278): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
E/AndroidRuntime( 1278): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
E/AndroidRuntime( 1278): ... 11 more
E/AndroidRuntime( 1278): Caused by: java.lang.NoSuchMethodException: IconView(Context,AttributeSet)
E/AndroidRuntime( 1278): at java.lang.Class.getMatchingConstructor(Class.java:674)
E/AndroidRuntime( 1278): at java.lang.Class.getConstructor(Class.java:486)
E/AndroidRuntime( 1278): at android.view.LayoutInflater.createView(LayoutInflater.java:475)
E/AndroidRuntime( 1278): Caused by: android.view.InflateException: Binary XML file line #36: Error inflating class com.simplelife.sample.IconView
E/AndroidRuntime( 1278): at android.view.LayoutInflater.createView(LayoutInflater.java:503)
E/AndroidRuntime( 1278): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
E/AndroidRuntime( 1278): at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
E/AndroidRuntime( 1278): at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
E/AndroidRuntime( 1278): at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
E/AndroidRuntime( 1278): at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
E/AndroidRuntime( 1278): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
E/AndroidRuntime( 1278): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
E/AndroidRuntime( 1278): ... 11 more
E/AndroidRuntime( 1278): Caused by: java.lang.NoSuchMethodException: IconView(Context,AttributeSet)
E/AndroidRuntime( 1278): at java.lang.Class.getMatchingConstructor(Class.java:674)
E/AndroidRuntime( 1278): at java.lang.Class.getConstructor(Class.java:486)
E/AndroidRuntime( 1278): at android.view.LayoutInflater.createView(LayoutInflater.java:475)
이런식의 에러가 날때가 있다.
이건 해당 custom layout에
public IconView(Context context, AttributeSet attrs) {
을 선언안했기 때문이다.이런식으로 추가 시켜준다.
에러 유형 2.
IconView customMainView= (IconView)findViewById(R.id.custom_MainView);
if(customMainView == null)
Log.d(LOG_TAG, "--;;");
if(customMainView == null)
Log.d(LOG_TAG, "--;;");
위에서 customMainView 가 null 이 나온다.
"에러 유형 1" 을 수정하는데 부정확하게 한 경우이다
public IconView (Context context, AttributeSet attrs) {
// super(context); <- 이렇게 하면 안된다.
super(context, attrs);
}
// super(context); <- 이렇게 하면 안된다.
super(context, attrs);
}
위에처럼 처리하도록 한다.
Tag : android
Response :
0 Trackback
,
0 Comment
Trackback URL : http://simplelife.pe.kr/tc/trackback/671