마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ScrollView를 함수통해 이동시 에러가 발생합니다.

0 추천

함수 말고, 앱을 실행시켜 스크롤을 움직이는건 잘되는데요.

 

페이지 이동시마다, 스크롤을 맨 위로 초기화 하고 싶어서.

 

sv.fullScroll(ScrollView.FOCUS_DOWN);

나 sv.smoothScrollTo(0, 0); 를모두 이용해 봐도, 해당 함수가 실행되는 시점에서 오류가 생깁니다ㅠ

package com.example.fellingrecorder;

import android.app.Activity;
import android.graphics.Color;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewTreeObserver;
import android.widget.ScrollView;
import android.widget.TextView;

public class NeedsActivity extends BaseActivity implements OnClickListener {
	
		//Scroll View
		ScrollView sv;
		
		
	@Override
	public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.needslist);
	    
	    
	    //Scroll view initialize
	    ScrollView sv = (ScrollView)findViewById(R.id.scrollView1);
            InitialTextEdit()
	}

	public void InitialTextEdit()
	{
		sv.fullScroll(ScrollView.FOCUS_DOWN);
		//sv.smoothScrollTo(0, 0);//scroll initialize
	}

	
	
}

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff"
    android:orientation="vertical" >
<ScrollView
        android:id="@+id/scrollView1"
        android:scrollbars="@null"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" >

        <LinearLayout
            android:id="@+id/fragment"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >
			<TextView
                        android:id="@+id/detailNeeds1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginBottom="7dp"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="7dp"
                        android:layout_marginTop="7dp"
                        android:text=""
                        android:textSize="20sp"
                        android:textStyle="bold" />
            
        </LinearLayout>
    </ScrollView>
</LinearLayout>

 

에러 로그

02-06 03:17:58.833: E/AndroidRuntime(5414): FATAL EXCEPTION: main
02-06 03:17:58.833: E/AndroidRuntime(5414): java.lang.NullPointerException
 
02-06 03:17:58.833: E/AndroidRuntime(5414): at com.example.fellingrecorder.NeedsActivity.InitialTextEdit(NeedsActivity.java:145)
 
02-06 03:17:58.833: E/AndroidRuntime(5414): at com.example.fellingrecorder.NeedsActivity.onClick(NeedsActivity.java:155)
02-06 03:17:58.833: E/AndroidRuntime(5414): at android.view.View.performClick(View.java:4084)
 
02-06 03:17:58.833: E/AndroidRuntime(5414): at android.view.View$PerformClick.run(View.java:16966)
 
02-06 03:17:58.833: E/AndroidRuntime(5414): at android.os.Handler.handleCallback(Handler.java:615)
 
02-06 03:17:58.833: E/AndroidRuntime(5414): at android.os.Handler.dispatchMessage(Handler.java:92)
 
02-06 03:17:58.833: E/AndroidRuntime(5414): at android.os.Looper.loop(Looper.java:137)
 
02-06 03:17:58.833: E/AndroidRuntime(5414): at android.app.ActivityThread.main(ActivityThread.java:4745)
 
02-06 03:17:58.833: E/AndroidRuntime(5414): at java.lang.reflect.Method.invokeNative(Native Method)
 
02-06 03:17:58.833: E/AndroidRuntime(5414): at java.lang.reflect.Method.invoke(Method.java:511)
 
02-06 03:17:58.833: E/AndroidRuntime(5414): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
 
02-06 03:17:58.833: E/AndroidRuntime(5414): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
 
02-06 03:17:58.833: E/AndroidRuntime(5414): at dalvik.system.NativeStart.main(Native Method)
 
아얀 (190 포인트) 님이 2015년 2월 6일 질문

2개의 답변

+1 추천
디버깅을 해보면 확실히 알수있을텐데요.

함수 부분은 전역변수를 사용하고 있네요.

그래서 아마도 OnCreate 안의

 

ScrollView sv = (ScrollView)findViewById(R.id.scrollView1);

대신

sv = (ScrollView)findViewById(R.id.scrollView1);

로 코딩 하시면 될거 같네요.
chemkaaa (6,030 포인트) 님이 2015년 2월 6일 답변
오 그렇게 하니까 정상 작동되네요~!~! 정말 고맙습니다 ( _ _)
0 추천
FATAL EXCEPTION: main
java.lang.NullPointerException
 at com.example.fellingrecorder.NeedsActivity.InitialTextEdit(NeedsActivity.java:145)
 at com.example.fellingrecorder.NeedsActivity.onClick(NeedsActivity.java:155)
 at android.view.View.performClick(View.java:4084)
 at android.view.View$PerformClick.run(View.java:16966)
 at android.os.Handler.handleCallback(Handler.java:615)
 at android.os.Handler.dispatchMessage(Handler.java:92)
 at android.os.Looper.loop(Looper.java:137)
 at android.app.ActivityThread.main(ActivityThread.java:4745)
 at java.lang.reflect.Method.invokeNative(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:511)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
 at dalvik.system.NativeStart.main(Native Method)

다음부터는 이렇게 불필요한 부분을 제거하고 올리세요

 

java.lang.NullPointerException
 at com.example.fellingrecorder.NeedsActivity.InitialTextEdit(NeedsActivity.java:145)

NeedsActivity.java의 145번째 줄에서 null인 변수를 사용하고 있다는 뜻입니다 

쎄미 (162,410 포인트) 님이 2015년 2월 6일 답변
아 그렇군요! 다음부터 그렇게 달도록 하겠습니다.
...