본문 바로가기

오탈자 정보

[프로페셔널 안드로이드 2 애플리케이션 개발]_오탈자

현재까지 발견된 위 책의 오탈자 정보와 오류 사항 그리고 보다 매끄러운 문장을 위해 수정한 내용들입니다. 불편을 끼쳐드려 죄송합니다.

혹시 이 외의 오탈자 정보를 발견하시는 분이 계시면 출판사 메일 jeipub골뱅이gmail.com이나  역자 메일 chosungmann골뱅이daum.net으로 연락주시면 고맙겠습니다.


최종수정일자: 2011년 4월 23일
3쇄본 오탈자
114쪽 코드 3-12 밑에서 다섯 번째 줄(원서오류)(임종호 님 제공)
// onCreate가 종료된 후 호출된다. UI 상태 복구에 사용한다.
==>
// onStart가 종료된 후 호출된다. UI 상태 복구에 사용한다. 

이에 따라 그림 3-7도 아래와 같이 수정되어야 합니다.


2쇄본 오탈자
114쪽 그림 3-7에서(원서오류)(송호진 님 제공)
Activity.onCreate 다음에 있는 Activity.onSaveInstanceState ==> Activity.onRestoreInstanceState
Activity.onResume 다음에 있는 Activity.onRestoreInstanceState ==>  Activity.onSaveInstanceState

9장 404쪽과 408쪽 전부(인쇄오류)



1쇄본 오탈자
아래의 소스 코드 오류들을 수정한 파일은 다음에서 받으실 수 있습니다.
==> http://jpub.tistory.com/102 의 소스 코드(역자 제공)

이 블로그에서 소스코드 들여쓰기는 서체 문제로 인해 글자 하나와 스페이스 하나가 일대일 대응이 되지 않고 있습니다.
아래 내용을 복사하여 메모장에 붙여 보시면 정확하게 보실 수 있음을 알려 드립니다.

185페이지 밑에서 5번째 줄부터 186페이지 위에서 3번째 줄까지 볼드 처리(역자 제공)
@Override
public void onCreateContextMenu(ContextMenu menu,
                                View v,
                                ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);

    menu.setHeaderTitle("할 일 아이템 선택");
    menu.add(0, REMOVE_TODO, Menu.NONE, R.string.remove);
}
==>
@Override
public void onCreateContextMenu(ContextMenu menu,
                                View v,
                                ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);

    menu.setHeaderTitle("할 일 아이템 선택");
    menu.add(0, REMOVE_TODO, Menu.NONE, R.string.remove);
}

187페이지 위에서 19번째 줄은 볼드처리를 해제(역자 제공)
registerForContextMenu(myListView); ==> registerForContextMenu(myListView);

188페이지 밑에서 11, 12번째 줄 2줄을 볼드처리 해제(역자 제공)
AdapterView.AdapterContextMenuInfo menuInfo;
menuInfo =(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
==>
AdapterView.AdapterContextMenuInfo menuInfo;
menuInfo =(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();

232페이지 위에서 6번째 줄 코드 수정(역자 제공)
create = _create; ==> created = _created;

263페이지 위에서 13번째줄 부터 4줄을 볼드 처리(역자 제공)
<string name="auto_update_prompt">자동 업데이트?</string>
<string name="update_freq_prompt">업데이트 빈도</string>
<string name="min_quake_mag_prompt">최소 진도</string>
<string name="menu_preferences">환경설정</string>
==>
<string name="auto_update_prompt">자동 업데이트?</string>
<string name="update_freq_prompt">업데이트 빈도</string>
<string name="min_quake_mag_prompt">최소 진도</string>
<string name="menu_preferences">환경설정</string>

272페이지 위에서 10번째 줄을 볼드 처리(역자 제공)

    }
}
==>
    }
}

311페이지 위에서 3번째줄 부터 4줄을 볼드 처리 해제(역자 제공)
toDoDBAdapter = new ToDoDBAdapter(this);

// 데이터베이스를 개방 또는 생성한다.
toDoDBAdapter.open();

populateTodoList();

==>
toDoDBAdapter = new ToDoDBAdapter(this);

// 데이터베이스를 개방 또는 생성한다.
toDoDBAdapter.open();

populateTodoList();

322페이지 위에서 11번째 줄 코드 수정(역자 제공)
String where, String[] wArgs) {
==>
String where, String[] whereArgs) {

323페이지 위에서 18번째 줄 코드 수정(김성호 님 제공)
+ KEY_MAGNITUDE + " FLOAT), "
==>
+ KEY_MAGNITUDE + " FLOAT, "

330페이지 밑에서 3번째 줄을 볼드 처리(역자 제공)
loadQuakesFromProvider();
==>
loadQuakesFromProvider();

361페이지 밑에서 4, 5번째 줄 2줄을 볼드 처리(역자 제공)
myLocationText.setText("현재 위치:\n" +
                       latLongString + "\n" + addressString);
==>
myLocationText.setText("현재 위치:\n" +
                       latLongString + "\n" + addressString);

405페이지 밑에서 12번째 줄 코드 수정(역자 제공)

"yyyy-MM-dd 'T 'hh:mm:ss 'Z '"
==>
"yyyy-MM-dd'T'hh:mm:ss'Z'"

407페이지 위에서 3번째 줄부터 408페이지 위에서 13번째 줄까지의 모든 코드를 아래 코드로 대체(역자 제공)
private Timer updateTimer;
 
private int minimumMagnitude = 0;
private boolean autoUpdate = false;
private int updateFreq = 0;
 
@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    // 공유 환경설정을 얻어온다.
    Context context = getApplicationContext();
    SharedPreferences prefs =
        PreferenceManager.getDefaultSharedPreferences(context);

    autoUpdate = 
        prefs.getBoolean(Preferences.PREF_AUTO_UPDATE, false);

    minimumMagnitude = 
        Integer.parseInt(prefs.getString(Preferences.PREF_MIN_MAG, "0"));

    updateFreq = 
        Integer.parseInt(prefs.getString(Preferences.PREF_UPDATE_FREQ, "0"))

    updateTimer.cancel();

    if(autoUpdate) {
        updateTimer = new Timer("earthquakeUpdates");

        updateTimer.scheduleAtFixedRate(new TimerTask() {
            public void run() {
                refreshEarthquakes();
            }
        }, 0, updateFreq*60*1000);
    }

    refreshEarthquakes();

    return Service.START_STICKY;
};

@Override
public void onCreate() {
    updateTimer = new Timer("earthquakeUpdates");
}

450페이지 4번째 줄(김성호 님 제공)
pdateFreq*60*1000;
==>
updateFreq*60*1000;

477페이지 7.1번 문장 수정(역자 제공)
먼저 EarthquakeService에 있는 doRefreshEarthquakes 메서드를 수정해 작업 완료 후 인텐트를 방송하도록 업데이트한다.
==>
먼저 EarthquakeService에 있는 EarthquakeLookupTask의 onPostExecute 메서드를 수정해 작업 완료 후 인텐트를 방송하도록 업데이트한다.

477페이지 7.1번에 딸린 코드 전체(역자 제공)
public static String QUAKES_REFRESHED =
    "com.paad.earthquake.QUAKES_REFRESHED";
public void doRefreshEarthquakes() {
    [ ... 기존 doRefreshEarthquakes 코드 ... ]
    sendBroadcast(new Intent(QUAKES_REFRESHED));
}
==>
public static String QUAKES_REFRESHED =    
    "com.paad.earthquake.QUAKES_REFRESHED"; 
protected void onPostExecute(Void result) {
    sendBroadcast(new Intent(QUAKES_REFRESHED));  
    stopSelf();
}

485페이지 첫 번째 줄에서(김성호 님 제공)
EarthquakeLiveFolder라는 이름의…
==>
EarthquakeLiveFolders라는 이름의…

493페이지 밑에서 10번째 줄 코드 수정 및 볼드처리(역자 제공)
private static int SEARCH = 3;
==>
private static final int SEARCH = 4;

495페이지 밑에서 17번 째 줄 코드 수정(역자 제공)
String searchQuery = Uri.withAppendedPath(EarthquakeProvider.SEARCH_URI,
                                          searchTerm);
==>
Uri searchQuery = Uri.withAppendedPath(EarthquakeProvider.SEARCH_URI,
                                       searchTerm);

495페이지 밑에서 3번째 줄 코드 수정(역자 제공)
android:label="Earthquake Search">
==>
android:label="지진 정보 검색">

564페이지 밑에서 7,8,9번째 줄 세 줄 볼드처리 해제(역자 제공)
if (message.getMessageBody().toLowerCase().contains
    (queryString))
    requestReceived(message.getOriginatingAddress());

==>
if (message.getMessageBody().toLowerCase().contains
    (queryString))
    requestReceived(message.getOriginatingAddress());

564페이지 밑에서 1번 째 줄 볼드처리 해제(역자 제공)
public void requestReceived(String _from) {}
==>

public void requestReceived(String _from) {}

573페이지 밑에서 9,10,11번 째 줄 세 줄 볼드처리(역자 제공)
Spinner respondForSpinner;
CheckBox locationCheckbox;
EditText responseTextBox;
==>
Spinner respondForSpinner;
CheckBox locationCheckbox;
EditText responseTextBox;

576페이지 위에서 18번째 줄 볼드 처리(역자 제공)
private void setAlarm(int respondForIndex) {}
==>
private void setAlarm(int respondForIndex) {}

579페이지 밑에서 4번째 줄 코드 수정(역자 제공)

String autoRespondPref = getString(R.string.autoRespondPref)
==>
String autoRespondPref = getString(R.string.autoRespondPref);

604페이지 위에서 1번째 줄부터 15줄 볼드 처리(역자 제공)
                    return null;
                }
                @Override
                protected void onPostExecute(BluetoothSocket result) {
                    if (result != null)
                        switchUI();
                    }
                };
                acceptThread.execute(resultCode);
            } catch (IOException e) {
                Log.d("BLUETOOTH", e.getMessage());
            }
        }
    }
}
==>
                    return null;
                }
                @Override
                protected void onPostExecute(BluetoothSocket result) {
                    if (result != null)
                        switchUI();
                    }
                };
                acceptThread.execute(resultCode);
            } catch (IOException e) {
                Log.d("BLUETOOTH", e.getMessage());
            }
        }
    }
}

674페이지 밑에서 7-15번째 줄 9줄 볼드 처리(역자 제공)

Animation slideInLeft;
Animation slideOutLeft;
Animation slideInRight;
Animation slideOutRight;
Animation slideInTop;
Animation slideOutTop;
Animation slideInBottom;
Animation slideOutBottom;
TextView myTextView;
==>
Animation slideInLeft;
Animation slideOutLeft;
Animation slideInRight;
Animation slideOutRight;
Animation slideInTop;
Animation slideOutTop;
Animation slideInBottom;
Animation slideOutBottom;
TextView myTextView;

674페이지 밑에서 2번째 줄부터 675페이지 위에서 15번째 줄까지 볼드 처리(역자 제공)

slideInLeft = AnimationUtils.loadAnimation(this,
    R.anim.slide_left_in);
slideOutLeft = AnimationUtils.loadAnimation(this,
    R.anim.slide_left_out);
slideInRight = AnimationUtils.loadAnimation(this,
    R.anim.slide_right_in);
slideOutRight = AnimationUtils.loadAnimation(this,
    R.anim.slide_right_out);
slideInTop = AnimationUtils.loadAnimation(this,
    R.anim.slide_top_in);
slideOutTop = AnimationUtils.loadAnimation(this,
    R.anim.slide_top_out);
slideInBottom = AnimationUtils.loadAnimation(this,
    R.anim.slide_bottom_in);
slideOutBottom = AnimationUtils.loadAnimation(this,
    R.anim.slide_bottom_out);

myTextView = (TextView)findViewById(R.id.myTextView);
==>
slideInLeft = AnimationUtils.loadAnimation(this,
    R.anim.slide_left_in);
slideOutLeft = AnimationUtils.loadAnimation(this,
    R.anim.slide_left_out);
slideInRight = AnimationUtils.loadAnimation(this,
    R.anim.slide_right_in);
slideOutRight = AnimationUtils.loadAnimation(this,
    R.anim.slide_right_out);
slideInTop = AnimationUtils.loadAnimation(this,
    R.anim.slide_top_in);
slideOutTop = AnimationUtils.loadAnimation(this,
    R.anim.slide_top_out);
slideInBottom = AnimationUtils.loadAnimation(this,
    R.anim.slide_bottom_in);
slideOutBottom = AnimationUtils.loadAnimation(this,
    R.anim.slide_bottom_out);

myTextView = (TextView)findViewById(R.id.myTextView);