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

조회수 1645회

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

안드로이드에서 프래그먼트에 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가 제대로 뜨진 않네요.

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

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

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 샘플 소스는 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를 어떻게 출력하는지만 참고하시면 될 것 같습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 늦은시간까지 답변 감사드립니다. 또 새로운 것을 알아가네요. 알 수 없는 사용자 2016.11.11 09:24

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)