본문 바로가기

오탈자 정보

[실무에 바로 적용하는 안드로이드 프로그래밍]_오탈자

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


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



최종수정일자: 2015년 1월 13일

2쇄본 오탈자


아래의 오탈자 사항은 추후 3쇄 시에는 모두 반영하도록 하겠습니다. 번역과 편집 시에 미처 확인을 하지 못해 불편을 끼쳐드려 다시 한 번 죄송하다는 말씀을 드립니다. 아래에 (역자 제공)으로 표시한 것들은 책이 출간되자마자 역자이신 심재철 님께서 책 전체를 재검토하여 보내주신 것들입니다. 출간 전 교정 작업을 다른 책에 비해 더 많이 했음에도 불구하고 오류 사항이 제법 발견되어 송구스럽습니다. 독자 여러분들의 양해를 구합니다. 


125쪽 리스트 본문 4번째 문단(독자 님 제공)

자식 액티비티가 setResult(...)를 호출할 필요가 없을 때도 있다. 만일 결과 코드와 인텐트의 데이터 수신을 구분할 필요가 없다면, 운영체제가 디폴트 결과 코드를 전달하게 놔두면 된다.

==>

자식 액티비티에서는 setResult(...)를 호출하지 않을 수도 있다. 만일 어떤 결과 코드인지 구분할 필요가 없거나 인텐트의 데이터를 받을 필요가 없다면, 운영체제가 디폴트 결과 코드를 전달하게 놔두면 된다.


206쪽 리스트 9.3에서 8번째 줄(독자 님 제공)

c.setSolved(I % 2 == 0); --> c.setSolved(i % 2 == 0);


308쪽 '리소스 지역화하기' 절 두 번째 문단 두 번째 줄(이*운 님 제공)

(한국어는 -kr이다). ==> (한국어는 -ko다). 


433쪽 본문 두 번째 줄(WJK 님 제공)

버전에서는 그 메서드들을 ==>  버전에서는 그 메서드들을


433쪽 본문 끝에 다음의 내용을 추가(역자 제공)

안드로이드는 첫 번째 형태에 가깝다. 신 버전 SDK에서 구 버전 SDK와의 호환성을 유지한다. 즉, deprecated된 API 메서드일지라도 제거되지 않는다는 의미다. 따라서 그런 메서드를 사용해도 가능하지만, 만일 사용하면 deprecation 경고 메시지가 나타난다. 그럴 때는 426페이지의 리스트 20.16처럼 @SuppressWarnings("deprecation") 주석을 사용해서 경고 메시지를 나타나지 않게 할 수 있다. 그러나 꼭 필요하지 않다면 deprecated된 API 메서드를 사용하지 않는 것이 바람직하다.


484쪽 마지막 문단 3-5행(WJK 님 제공)

스택의 제일 위에 있는 액티비티를 기본 액티비티(base activity)라고 하며, 그것이 어떤 액티비티이건 사용자가 현재 화면에 보는 액티비티가 된다.

==>
스택의 제일 밑에 있는 액티비티를 기본 액티비티(base activity)라고 하며, 제일 위에 있는 액티비티가 현재 화면에서 사용자가 보는 액티비티가 된다.

496쪽 리스트 24.1 1행(WJK 님 제공)
extends Activity SingleFragmentActivity ==> extends Activity SingleFragmentActivity 

498쪽 코드 위에서 8-10행(WJK 님 제공) 
android:layout_weight="1"
android:layout_margin="15dp"
android:background="#555555"
==>
android:layout_weight="1"
android:background="#555555"


515쪽 본문 두 번째 문단 2행(WJK 님 제공) 
botton_text_color.xml로 주고
==>
button_text_color.xml로 주고

537쪽, 538쪽, 542쪽, 574쪽, 599쪽에서(WJK 님 제공)
플리커 사이트의 URL 정책 변경으로 인한 수정 내용입니다.
아래의 행에서 모두 다음과 같이 변경해야 합니다. 
http:// ==> https:// 

537쪽의 위에서 일곱 번째 줄과 밑에서 두 번째 줄, 
538쪽 리스트 26.7의 위에서 세 번째 줄,
542쪽 리스트 26.11의 위에서 세 번째 줄,
574쪽 리스트 28.1의 위에서 세 번째 줄,
599쪽 리스트 29.6의 위에서 다섯 번째 줄

567쪽 리스트 27.7의 6-7행(WJK 님 제공)
두 행 모두에 <ImageView> 제네릭 타입을 추가해야 합
mThumbnailThread = new ThumbnailDownloader();
mThumbnailThread = new ThumbnailDownloader(new Handler());
==>
mThumbnailThread = new ThumbnailDownloader<ImageView>();
mThumbnailThread = new ThumbnailDownloader<ImageView>(new Handler());



최종수정일자: 2014년 1월 13일

1쇄본 오탈자


아래의 오탈자 사항은 추후 2쇄 시에는 모두 반영하도록 하겠습니다. 번역과 편집 시에 미처 확인을 하지 못해 불편을 끼쳐드려 다시 한 번 죄송하다는 말씀을 드립니다. 아래에 (역자 제공)으로 표시한 것들은 책이 출간되자마자 역자이신 심재철 님께서 책 전체를 재검토하여 보내주신 것들입니다. 출간 전 교정 작업을 다른 책에 비해 더 많이 했음에도 불구하고 오류 사항이 제법 발견되어 송구스럽습니다. 독자 여러분들의 양해를 구합니다. 



213쪽 리스트 9.12 소스 1행(신*창 님 제공)

public class CrimeActivity extends FragmentActivity SingleFragmentActivity {

==>

public class CrimeActivity extends FragmentActivity SingleFragmentActivity {


26쪽 상단 소스 네 번째 주석문(역자 제공)

// Does nothing yet, but soon! ==> // 아직은 아무 일도 하지 않지만 곧 코드가 추가된다!


29쪽 리스트 1.13 바로 아래 문장에서(김*민 님 제공)

makeText(…)에서는 Context 인자로 QuizActivity의 인스턴스를 전달한다. 여기서 new View.OnClickListener() {…}는 익명의 내부 클래스를 정의하고 그것의 인스턴스를 생성한다는 의미다. 따라서 QuizActivity.this의 this는 View.OnClickListener의 인스턴스를 참조한다.

==>

여기서 new View.OnClickListener() {…}는 익명의 내부 클래스를 정의하고 그것의 인스턴스를 생성한다는 의미다. 그리고 makeText(…)에서는 Context 인자로 QuizActivity의 인스턴스를 전달한다. 그러나 이때 단순히 this만 전달하면 안 된다. QuizActivity.this라고 해야 한다. this는 내부 클래스인 View.OnClickListener의 인스턴스를 참조하는 것이기 때문이다.


56쪽 그림 2.7 아래 본문 두 줄 위치 변경(역자 제공)

(위치 변경) 그림 2.7 아래의 본문 두 줄을 그림 2.7 위로 변경


56쪽 그림 2.7 교체(역자 제공)

(1쇄에는 안드로이드 버전이 4.3으로 되어 있는데, 4.4로 변경)



59쪽 '챌린지'절 마지막 문단에서(역자 제공)

오른쪽 버튼을 클릭하면, 새로운 ==> 오른쪽 버튼을 클릭하고 Paste를 선택하면 새로운


68쪽 그림 3.3 그림 교체(역자 제공)

(그림에서 우측 하단 영역에 Console 부분이 없어야 함)



69쪽 그림 3.4 그림 교체(역자 제공)

(그림에서 우측 하단 영역에 Console 부분이 없어야 함)



84쪽 그림 3.17에서 메서드 이름 수정(역자 제공)

 로그 레벨

 메서드

 ==>

 로그 레벨

 메서드

 ERROR

 Log.e(...)

 ==>

 ERROR

 Log.e(...)

 WARNING

 Log.e(...)

 ==>

 WARNING

 Log.w(...)

 INFO

 Log.e(...)

 ==>

 INFO

 Log.i(...)

 DEBUG

 Log.e(...)

 ==>

  DEBUG

 Log.d(...)

 VERBOSE

 Log.e(...)

 ==>

 VERBOSE

 Log.v(...)


88쪽 위에서 첫 번째 줄에서(역자 제공)

디폴트 페스펙티브는 ==> 디폴트 퍼스펙티브는


92쪽 리스트 4.3 코드 4행에서(빈행 포함)(역자 제공)

public void ==> private void


93쪽 리스트 4.4 코드 5행에서(빈행 포함)(역자 제공)

public void ==> private void


94쪽 그림 4.6 교체(역자 제공)

(그림 안 코드 수정)


136쪽 본문 두 번째 문단에서(역자 제공)

장치의 절반 이상이 여전히 ==> 장치의 30% 정도가 여전히


152쪽 본문 마지막 문단 두 번째 줄에서(역자 제공)

더욱 확실하기 알게 ==> 더욱 확실하게 알게


162쪽 그림 7.11에서 중단(Stopped) 우측 아래 메서드 수정(역자 제공)

onStop ==> onStop()


176쪽 그림 7.18에서 중단(Stopped) 우측 아래 메서드 수정(역자 제공)

onStop ==> onStop()


213쪽 리스트 9.12 두 번째 주석문 수정(한글로 번역하고 취소선 삽입)(역자 제공)

/** Called when the activity is first created. */

==>

/** 이 액티비티가 최초 생성될 때 호출된다. */


242쪽-243쪽 코드의 들여쓰기 수정(역자 제공)

    public void onListItemClick(ListView l, View v, int position, long id) {

    // 어댑터로부터 Crime 객체를 받는다.

    Crime c = ((CrimeAdapter)getListAdapter()).getItem(position);

    Log.d(TAG, c.getTitle() + " was clicked");

    // CrimeActivity를 시작시킨다.

    Intent i = new Intent(getActivity(), CrimeActivity.class);


    startActivityForResult(i, REQUEST_CRIME);

}

    @Override

    public void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == REQUEST_CRIME) {

            // 결과 값을 처리한다.

        }

    }

}


==>


    public void onListItemClick(ListView l, View v, int position, long id) {

        // 어댑터로부터 Crime 객체를 받는다.

        Crime c = ((CrimeAdapter)getListAdapter()).getItem(position);

        Log.d(TAG, c.getTitle() + " was clicked");

        // CrimeActivity를 시작시킨다.

        Intent i = new Intent(getActivity(), CrimeActivity.class);


        startActivityForResult(i, REQUEST_CRIME);

    }

    @Override

    public void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == REQUEST_CRIME) {

            // 결과 값을 처리한다.

        }

    }

}


314쪽 '비호환의 디렉터리들을 제외시키기' 절의 두 번째 문단에서(역자 제공)

만일 장치를 가로 방향(potrait)으로 ==> 만일 장치를 세로 방향으로


383쪽 우측 하단 페이지 번호 옆의 절 제목(역자 제공)

챌린지: ActionBarSherlock 사용하기 ==> (삭제되어야 함)


416쪽 리스트 20.7의 하단 부분 주석문 삭제(역자 제공)

    } else if (requestCode == REQUEST_PHOTO) {

        // 새로운 사진(Photo) 객체를 생성하고 그것을 범죄(crime) 데이터에 첨부한다.

        String filename = data

==>

    } else if (requestCode == REQUEST_PHOTO) {

        String filename = data


419쪽 리스트 20.10 들여쓰기 및 일부 볼드체로 수정(역자 제공)

            updateDate();

        } else if (requestCode == REQUEST_PHOTO) {

        // 새로운 사진(Photo) 객체를 생성하고 그것을 범죄(crime) 데이터에 첨부한다.

        String filename = data

            .getStringExtra(CrimeCameraFragment.EXTRA_PHOTO_FILENAME);

        if (filename != null) {

            Log.i(TAG, "filename: " + filename);


            Photo p = new Photo(filename);

            mCrime.setPhoto(p);

            Log.i(TAG, "Crime: " + mCrime.getTitle() + " has a photo");

        }

    }

}

==>

            updateDate();

        } else if (requestCode == REQUEST_PHOTO) {

            // 새로운 사진(Photo) 객체를 생성하고 그것을 범죄(crime) 데이터에 첨부한다.

            String filename = data

                .getStringExtra(CrimeCameraFragment.EXTRA_PHOTO_FILENAME);

            if (filename != null) {

                Log.i(TAG, "filename: " + filename);


                Photo p = new Photo(filename);

                mCrime.setPhoto(p);

                Log.i(TAG, "Crime: " + mCrime.getTitle() + " has a photo");

            }

        }

}


440쪽 상단 코드 한글화(역자 제공)

<string name="crime_report">%1$s! The crime was discovered on %2$s. %3$s, and %4$s

==>

<string name="crime_report">%1$s! 이 범죄가 발견된 날짜는 %2$s. %3$s, and %4$s


567쪽 리스트 22.7 10번째 줄(빈행 포함)(역자 제공)
mThumbnailThread = new ThumbnailDownloader<ImageView>(new Handler());

==>

mThumbnailThread.setListener(new ThumbnailDownloader.Listener<ImageView>() {


668쪽 그림 33.1 교체(역자 제공)

(Compile With 부분이 Google APIs (Google Inc.) (API 19)로 되어야 함)


669쪽 그림 33.2 제목 수정(역자 제공)

SDK 4.3의 구글 API 설치하기 ==> SDK 4.4의 구글 API 설치하기


705쪽 소소 코드 하단 5줄 볼드체 제거(빈행 포함)(역자 제공)

    private static class RunCursorAdapter extends CursorAdapter {


        private RunCursor mRunCursor;


        ...

==>

    private static class RunCursorAdapter extends CursorAdapter {


        private RunCursor mRunCursor;


        ...