투케이2K

332. (TWOK/ERROR) [Android] android.text.Layout.getLineTop(int) on a null object reference 본문

투케이2K 에러관리

332. (TWOK/ERROR) [Android] android.text.Layout.getLineTop(int) on a null object reference

투케이2K 2025. 10. 2. 21:02
728x90
반응형

[환경 설정 및 설명]

프로그램 : Android / 안드로이드

설 명 : [Android] android.text.Layout.getLineTop(int) on a null object reference

 

[설 명]

--------------------------------------------------------------------------
[개발 및 테스트 환경]
--------------------------------------------------------------------------

- 제목 : [Android] android.text.Layout.getLineTop(int) on a null object reference


- 테스트 환경 : 삼성 갤럭시 스마트폰 / 안드로이드 / Android

--------------------------------------------------------------------------





--------------------------------------------------------------------------
[에러 원인]
--------------------------------------------------------------------------

1. 안드로이드에서 텍스트 뷰 ( TextView ) 자동 스크롤 하단 이동 기능 수행 시 컴포넌트 Visibility 가 

  View.GONE 으로 설정 되어 있어 textView.getLayout().getLineTop 호출 값을 확인 하지 못하는 이슈


2. 에러 발생 전체 로그 : 

  W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.text.Layout.getLineTop(int)' on a null object reference
  W/System.err:     at com.example.javaproject.C_Activity.A_Test_Aws_WebRTC_Webview.scrollBottom(A_Test_Aws_WebRTC_Webview.java:1617)
  W/System.err:     at com.example.javaproject.C_Activity.A_Test_Aws_WebRTC_Webview.access$000(A_Test_Aws_WebRTC_Webview.java:63)
  W/System.err:     at com.example.javaproject.C_Activity.A_Test_Aws_WebRTC_Webview$AndroidBridge$5.run(A_Test_Aws_WebRTC_Webview.java:1387)
  W/System.err:     at android.os.Handler.handleCallback(Handler.java:959)

--------------------------------------------------------------------------





--------------------------------------------------------------------------
[해결 방법]
--------------------------------------------------------------------------

1. 안드로이드 하단 스크롤 이동 textView.getLayout().getLineTop() 함수 호출 시 사전 컴포넌트 Visibility 상태 점검 후 수행하도록 로직 변경


2. 간단 소스 예시 (Java) : 

    private void scrollBottom(TextView textView) {
        try {
            // -------------------------------------------
            // Check TextView Visibility
            // -------------------------------------------
            if (textView != null && textView.getVisibility() == View.VISIBLE){
              int lineTop =  textView.getLayout().getLineTop(textView.getLineCount()) ;
              int scrollY = lineTop - textView.getHeight();
              if (scrollY > 0) {
                  textView.scrollTo(0, scrollY);
              } else {
                  textView.scrollTo(0, 0);
              }
            }            
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }

--------------------------------------------------------------------------





--------------------------------------------------------------------------
[참고 사이트]
--------------------------------------------------------------------------

(AndroidStudio/android/java) 텍스트 뷰 (TextView) 에 자동 스크롤 적용 실시 (로그 기록 사용)

https://blog.naver.com/kkh0977/222257090989?trackingCode=blog_bloghome_searchlist


(AndroidStudio/android/java) scrollbars , setMovementMethod 사용해 텍스트 뷰 (TextView) 스크롤 만들기

https://blog.naver.com/kkh0977/222320075414?trackingCode=blog_bloghome_searchlist

--------------------------------------------------------------------------
 
728x90
반응형
Comments