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..
이 에러는 참으로 갑자기 불쑥 나오기로 유명하다. 액티비티 종료 중에 컨텍스트를 사용하다가 잘 발생한다. 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()를 사용 하면 해결..
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"바로 위로 옮기면 된다.
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, return true가 항상 따라 다닌다. 이게 뭐가 중요할까? 1. true- 일 다했으니 해당 이벤트에 대해서는 다음에 쌓인일은 지워. 2. false- 아직 일 다 못했다.. 다음에 쌓여 있는 같은 일 또 보내줘.. 처리 하게... 그렇다.true는 깔끔하게 처리 하고 끝낸다.false는 일 덜 처리 했다... 즉, event 값에 원하는 값이 안 오거나, null이 오거나... 등 만족 스럽지 못했을 경우에 사용 하면 된다.