반응형

Android 28

Android 에서 Application 객체로 전역변수를 사용할 수 없을 때.

일반적으로 안드로이드 객체로 전역변수 사용하는 법을 검색하면, 두 가지가 나온다. 1.1. AndroidManifest.xml 에서 Application 객체의 이름 선언( android:name="전역 클래스 이름" ) 을 추가하고, 1.2. 전역 클래스 aaa = (전역 클래스)getApplication(); 으로 객체를 가져다 쓴다. 2. 싱글톤 ( SingleTone )사용. 근데 나는 2.번에 익숙치도 않고, 구조체가 좀 크기도 하고...기타등등 해서 주로 1번 쓰는데,자꾸 에러나더라. 처음엔 이게...에러 날 만한 내용이 아니라서 "혹시 오타? 설정미스?" 라고 생각하고 계속 디비보다가 도저히 모르겠어서 포기할.... 생각까지 하다 혹시나 해서 에러 메시지를 디비봤다. newInstance f..

webkit 에서 <a href="tel:전화번호"></a> 가 안 먹힐 때

안드로이드 프로그램을 할 때, hybrid 로 짤때가 있다. 즉, 내부 로직이랑 엔진, 데이터나 통신 등은 전부 뒷단에 놓고, 사용자 UI 는 webkit 을 써서 html 로 짜는거지. 자세한 건 주제에 벗어나니 하려는 이야기만 하자면, 이런 식으로 html 을 사용자 UI 로 쓸 경우, html 안에 등으로 전화번호에 전화를 걸거나, 문자를 보내는 기능을 구현하기도 한다.근데, 이거... 아무런 코드 수정 없이 그대로 쓰면 전화가 걸리거나 문자가 가는 게 아니고, 위의 "tel:", "sms:" 를 url 링크로 인식해 버린다. 예를 들어 010-1234-5678 과 같은 코드가 있을 경우, 클릭하면 010-1234-5678 로 전화 걸리는 게 아니라, "tel:010-1234-5678" 이라는 웹 ..

android back key 에서 super 의 사용.

아래와 같은 코드가 있다 치자. public boolean onKeyUp(int keyCode, KeyEvent event){ switch(keyCode){ case KeyEvent.KEYCODE_BACK: System.exit(0); }; return super.onKeyUp(keyCode, event); } 코드를 보면, back key 를 눌렀을 때 종료되는 프로그램 처럼 보인다. 과연 종료가 제대로 될까? 결론부터 말하면, 알 수 없다. 이거 쓰레드 집어넣다가 우연히 알게된 건데, Android에서 back 키는, 현재 Activity 를 background process로 돌리는 역할을 하는 값이다. 프로그램을 종료하는 기능은 없다. 그러므로, 이 함수의 경우, System.exit(0) 가 f..

프로그램 2012.01.26

getTag() 값은 String 으로만 변경 가능한 걸까?

예를 들어, setTag() 로 넣어둔 값을 빼낼 때는 이렇게 쓴다. TextView tx = new TextView(); tx.setTag( 1 ); int v = Integer.parseInt( tx.getTag().toString() ); 그런데, setTag() 에서 넣을 값은 Object 형식이다. 그럼, setTag() 에는 실제로 아무거나 다 넣을 수 있다는 건데. 그럼, 이런 코드도 될까? TextView tx = new TextView(); ImageView im = new ImageView(); tx.setTag( im ); ImageView v = (ImageView)( tx.getTag() ); 흠. 가능성이 없지는 않은데 말이쥐.

프로그램 2012.01.21

Android Back Key 이용법 2.

1. 2.3 버전인가 2.1버전인가에서부터, onKeyUp을 쓰도록 추천되었다고 한다. 2. 기존 소스에 key 이벤트의 super 핸들러가 빠져 있어서, 기존 코드로는 keyEvent가 싸그리 overwrite 되어버러서 명시적으로 정의되지 않은 menu key 등의 이벤트는 아무것도 작동하기 않게 되어버린다. 이를 막기 위해서, super.onKeyUp( ) 을 넣어준다. 3. 최종적인 코드의 모습은 다음과 같다. public boolean onKeyUp( int keyCode, KeyEvent event ){ switch( keyCode ){ case KeyEvent.KEYCODE_BACK : Toast.makeText(this, "BackKey", Toast.LENGTH_SHORT ); break..

프로그램 2012.01.19
반응형