안드로이드 스튜디오 48

[안드로이드] 스트링으로 동적 값 적용하기

string.xml에 아래와 같이 작성을 하면, 동적인 값을 보여 주는 스트링을 만들 수 있다. 매번 스트링을 만드는 수고를 덜 수 있다. string파일 예) 08:%02d분, 09:%02d분, 10:%02d분 2%d는 두 자리수로 표기, 02%d는 01, 02, 03 처럼 표기 한다. 코드getString(R.string.test, Integer.parseInt(tempMinute), Integer.parseInt(tempMinute), Integer.parseInt(tempMinute));

[안드로이드] 프리퍼런스가 업데이트 안된다면?

말그대로 프리퍼런스(preference) summary가 없데이트 안 될 경우에는 어떻게 하느냐? 다른 화면을 갔다 올 경우에는 비교적 summary가 업데이트 잘 되지만, 한 화면에서 바로 바로 수정이 필요 할 경우에는 쉽지 않다. 만약, 잘 되다가 destory를 한 뒤 다시 들어 왔는데 이 때 부터 작동이 안된다면 ? 이전 글(BadTokenException)과 같은 내용의 해결 방법을 사용하면 된다. Preference를 static으로 만들어서 setSummary를 하면 된다. 어디서? onPreferenceChange(Preference pref, Object newValue) { 에서 받아온 pref로 pref.setSummary() 하지 말고 전역으로 선언해 놓고 하면 된다. 즉, publ..

[안드로이드] BadTokenException -is your activity running? 프리퍼런스에서 발생한다면?

이 에러는 참으로 갑자기 불쑥 나오기로 유명하다. 액티비티 종료 중에 컨텍스트를 사용하다가 잘 발생한다. android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@40b47bd8 is not valid; is your activity running? 1. 그래서 액티비티 종료 후에도 핸들러가 돌아 갈수도 있기에 갑자기 다이얼로그를 띄우는 등의 행동은 하지 말아야 할 것이다. 이럴때는 isFinishing()을 사용해서 예방 할 수 있다. 2. 또는 다른 액티비티와 연계되어서 발생 할 경우에는 getContext(), this.activity가 아닌 getParent()를 사용 하면 해결..

안드로이드 마지막 줄 버튼 정렬이 안된다면?

버튼을 맨 아래 쪽에 두 개를 배치 했는데 버튼의 크기가 한 쪽이 크다면? 아무리 찾아봐도 두 버튼이 다른 점이 없다면? 왼쪽 버튼 오른쪽 버튼 위와 같이 미세하게 차이가 나는 경우, 아무리 인터넷을 찾아도 나오지 않는다... 그러나 답은 간단하다. 두 버튼의 높이를 android:layout_height="match_parent" 로 하면 해결 된다.

[안드로이드 스튜디오] Plugin with id 'com.android.application' not found.

Gradle에서 이 에러가 나온다면 Plugin with id 'com.android.application' not found. build.gradle에buildscript { repositories { jcenter() // or mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.5.0' }} 를 추가 해주면 된다. 그래도 에러가 계속 난다면? 위 노랑이의 위치를 apply plugin: "com.android.application"바로 위로 옮기면 된다.

안드로이드 스튜디오 디버그 안나올 때

안드로이드 스튜디오 사용 중 갑자기 디버그가 전혀 안 먹히는 경우가 있다.(Android monitor의 no debuggable applications 여기에 앱이 전혀 잡히지 않는 경우)디버그 모드로 바꿔도 안되고, 디바이스 개발자 모드 다시 설정해도 안된다. 이럴때는 간단하게벌레 모양 디버그를 한번 눌러주면 된다. 끝.

[안드로이드] 미디어플레이어 에러 대처하기 (-38, -19)

error (-38, 0) 미디어 플레이어가 준비 되지 않았는데 시작 하게 되면 발생하는 에러다.즉, 준비 리스너를 달고 난 뒤 준비가 끝났다는 이벤트가 오면 시작 시키도록 하자. mPlayer.prepareAsync(); mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { public void onPrepared(MediaPlayer mp) { mp.start(); } }); 그러나,위와 같이 하면 또.. -38이 날 확률이 높다. mPlayer.prepareAsync(); 아래와 같이 코드를 리스너 밑으로 달자. 그래야 확실하게... 준비 된 사수로 부터 발사를 할 수 있다..... mPlayer.setOnPreparedListe..

[안드로이드] Listener Return false, true 의미

안드로이드에는 수 많은 리스너(Listener)가 있다. 기다렸다가 처리하라는 의미다. 그런데 return false, return true가 항상 따라 다닌다. 이게 뭐가 중요할까? 1. true- 일 다했으니 해당 이벤트에 대해서는 다음에 쌓인일은 지워. 2. false- 아직 일 다 못했다.. 다음에 쌓여 있는 같은 일 또 보내줘.. 처리 하게... 그렇다.true는 깔끔하게 처리 하고 끝낸다.false는 일 덜 처리 했다... 즉, event 값에 원하는 값이 안 오거나, null이 오거나... 등 만족 스럽지 못했을 경우에 사용 하면 된다.