<fragment 항목에 Custom attribute 를 사용하는 경우 


Unexpected namespace prefix "CUSTOM_NAMESPACE" found for tag fragment


이런 오류 메세지가 뜨면서 컴파일이 안되는 경우가 있습니다. 프로젝트를 클린하면 사라지고, 실행도 가능하지만 XML의 내용이 바뀌고 다시 저장될 때 같은 상황이 발생이 되기 때문에 매우 귀찮은데요, 검색해보니 XML의 Root 엘리먼트에 추가요소를 넣어주면 해결이 되더군요..


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:CUSTOM_NAMESPACE="http://schemas.android.com/apk/res/YOUR_PACKAGE_NAME"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"

    tools:ignore="MissingPrefix" >



        <fragment
            android:id="@+id/fragment"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            class="PACKAGE_AND_CLASSNAME"
            rollAdvert:viewType="calendar" />


.../>


컬러가 적용된 두개의 요소를 넣어주셔야 합니다.



출처 : http://www.programkr.com/blog/MIzMxEDMwYT5.html

상태값에 따라 다른 이미지를 적용하고 싶을 때 selector 를 이용하는데요.

버튼 enabled 값이 false (disabled) 상태일 때 이미지가 제대로 적용되지 않아 확인해보니 XML이 아래와 같았습니다.


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/button_on" android:state_selected="true"></item>
    <item android:drawable="@drawable/button_off" android:state_selected="false"></item>
    <item android:drawable="@drawable/button_dimmed" android:state_enabled="false"></item>

</selector>



XML 내용을 보면 state_enable="false" 를 포함한 항목이 제일 아래에 있는데요

selected 상태보다 enabled 값이 우선적으로 처리되어야 하기 때문에 이 항목을 위쪽으로 올려주어야 합니다.


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/button_dimmed" android:state_enabled="false"></item>
    <item android:drawable="@drawable/button_on" android:state_selected="true"></item>
    <item android:drawable="@drawable/button_off" android:state_selected="false"></item>

</selector>


이와같이.. 항목의 우선순위가 적용되는지 처음 알았네요... (알아서 좀 해주면 안되겠니!?)



참고 https://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String%29


이전에 만들어둔 앱에서 자바스크립트가 동작하지 않는 현상이 발생되어 확인해보니


 class JsObject {
   
@JavascriptInterface
   
public String toString() { return "injectedObject"; }
 
}


이런식으로 메소드 앞에 @JavascriptInterface 를 명시해줘야만 자바스크립트 -> 앱 호출이 제대로 처리가 되더군요.


애꿎은 서버 소스만 쳐다보고있었네요.. ^^

샘플을 보면서 지도를 한번 띄워보려고 아래와 같이 소스를 구현 했는데


import com.google.android.maps.MapActivity;


public class MainActivity extends MapActivity {


@Override

protected boolean isRouteDisplayed() {

return false;

}


//.. 기타 메소드들..

}

MapActivity cannot be resolved to a type

이런 에러가 발생한다면...


Properties 화면에서 Android 로 들어가보면 Target Name이 Android x.x 로 되어있는데 이걸 Google APIs 로 선택해주시면 해결됩니다. ^^;




개발 환경이 셋팅 되었으니..


모든 언어를 시작하면 가장 먼저 해보는 Hello world를 출력하는 샘플 만들기!



File - New - Project를 선택합니다.



Android - Android Application Project 선택


프로젝트의 이름과 SDK 선택

SDK는 지원 범위에 따라 적절히 선택해줍니다.

일단은 기본으로 계속 넘어가겠습니다.


프로젝트 정보


앱의 아이콘 선택. iOS와 달리 텍스트로도 만들 수가 있군요. 컬러 등을 지정해서 아이콘 이미지를 만들어줍니다.

여기도 일단은 기본으로 넘어가겠습니다.


처음 보여질 Activity의 스타일을 고르는 부분입니다. 템플릿 이라고 생각하시면 될 듯 하네요.


생성하는 Activity의 이름 지정


여기서 Navigation Type을 지정할 수 있는데 저는 최소버전을 API Version 8로 선택했기 때문에

None이 아닌 다른 타입을 선택하면 지원하지 않는다는 메세지를 보여주더군요.


이제 Finish를 누르면 기본적인 환경으로 만들어진 프로젝트가 생성됩니다.



Hello World는 기본으로 찍혀있군요! ㅋㅋ


지금까지 모바일쪽 개발은 iOS만 해왔는데 이번에 안드로이드를 공부할 일이 생겨 겸사겸사 포스팅 해봅니다.


일단 안드로이드 개발을 하려면 Eclipse와 Android SDK가 필요합니다.


http://developer.android.com/ 에 접속하여

Develop - Training - Building Your First App 메뉴를 타고 아래 페이지로 이동합니다.


오른쪽 GET STARTED 에 보면 Android SDK 링크가 있습니다.

이 링크를 통해 Mac용 Eclipst + Android SDK를 얻을 수 있습니다.


다운받은 파일을 풀어 Eclipse를 실행합니다.


저의 경우에는 Java가 없다고 설치를 요구합니다.

설치중.....


설치가 완료되고 창을 닫으면 알아서 Eclipse가 실행되는데 또다른 문제가 생기네요.



이 메세지는 아마도 Mountain Lion 이 설치되어있어서 그런 듯 합니다.

프로그램이 맥스토어에서 배포되지 않았기 때문에 보안상 사용자에게 알려주는 듯..


이때는 마우스 우클릭 또는 Ctrl + Click 해주시면 컨텍스트 메뉴가 뜨는데 여기서 '열기' 를 눌러주시면 아래와 같은 화면이 뜹니다.


위에 떳던 화면이랑 약간 다르죠? 여기에 열기 버튼이 있습니다.


한번 더 열기 버튼을 Eclipse가 실행됩니다.

Eclipse 실행중.......


처음 실행시 경로를 확인시켜주는데 저는 기본 경로 그대로 사용했습니다.



또 뭘 물어보네요.. 대충 보니 사용 정보를 구글로 보내겠느냐 물어보는것 같습니다.

이건 원하시는데로 하고 넘기면 됩니다. ^^


설치 과정 끝!



+ Recent posts