안드로이드 앱 내부 프래그먼트에 PDF 표시 관련 질문


안녕하세요. 이전에 질문드렸던 내용들은 나름 해결이 되었는데 이번에는 다른 문제가 생겨 이렇게 질문을 하게 되었습니다..

안드로이드에서 프래그먼트에 pdf를 띄우고 싶은데, 안드로이드 공식 api인 PdfRenderer를 이용하려 했으나 롤리팝 이상버전에서만 지원이 되는 api더군요.. 낮은버전에서도 사용이 되어야 해서 다른 방법을 찾고 있습니다.

그래서 구글링을 통해 라이브러리를 몇개 찾아보고 적용시키려 해봤지만, 샘플소스가 org.androidannotations.annotations 이라는것을 import하여 사용중이였습니다.

//메인 클래스
@EActivity(R.layout.activity_main)
@OptionsMenu(R.menu.options)
public class PDFViewActivity extends AppCompatActivity implements OnPageChangeListener, OnLoadCompleteListener {

    private static final String TAG = PDFViewActivity.class.getSimpleName();

    private final static int REQUEST_CODE = 42;

    public static final String SAMPLE_FILE = "sample.pdf";
    ...// 이후 생략

분명히 메인 클래스가 존재하는데도 매니페스트에서 액티비티 name은 클래스 이름에서 _ (언더 바) 가 포함되어 있고 그 경로를 다시 들어가서 봤더니 _ (언더 바)가 붙어져 있는 final로 선언된 클래스가 메인클래스를 상속하고 있습니다.

// 예시
<activity
            android:name="PDFViewActivity_"
            android:label="@string/app_name" >

마치 숨겨져있는 것 처럼 따로 프로젝트 탐색기 부분에서는 표시가 되진 않네요. 아래에 작성된 것이 _ (언더 바) 가 붙은 클래스의 onCreate 부분입니다.

    @Override
    public void onCreate(Bundle savedInstanceState) {
        OnViewChangedNotifier previousNotifier = OnViewChangedNotifier.replaceNotifier(onViewChangedNotifier_);
        init_(savedInstanceState);
        super.onCreate(savedInstanceState);
        OnViewChangedNotifier.replaceNotifier(previousNotifier);
        setContentView(R.layout.activity_main);
    }

이런식으로 작성된 코드는 처음 보는데, 지금까지 봤을때는 뭔가 _ (언더 바) 가 붙은 클래스에서 한번 더 처리를 통해서 화면에 띄워주는 것 같은데요.

새 프로젝트를 만들어서 비슷하게 나름대로 적용해보고 있지만 pdf가 제대로 뜨진 않네요.

혹시 이것과 관련해서 아시는 것이 있으시거나, 좀 더 간단한 예제가 있다면 답변 해주시면 감사하겠습니다.

긴 질문 읽어 주셔서 감사합니다. 날이 많이 추워졌는데 감기 조심하시길...


조회수 99


1 답변


좋아요
2
싫어요
채택취소하기

샘플 소스는 AndroidAnnotations로 만든 코드의 특징입니다. 즉, _가 붙은 액티비티는 AndroidAnnotations에 의해 컴파일 시 생성된 코드입니다.

You should always register your activity with an _ suffix in the Android Manifest.

This is because AndroidAnnotations generates a subclass for each annotated activity. It has the same package and name, plus an _ suffix.

AndroidAnnotations의 컨셉이 보일러플레이트 코드를 줄여 코드를 간결하게 유지하는 것이 목적 중 하나이기 때문에 _가 붙은 액티비티 주변(?) 원리를 연구할 필요는 없어보이고요. 해당 소스에서 PDF를 어떻게 출력하는지만 참고하시면 될 것 같습니다.


  • 늦은시간까지 답변 감사드립니다. 또 새로운 것을 알아가네요.    JoonSangYoo   2016.11.11 09:24     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close