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

안드로이드 초보 코딩질문이요(버튼)

0 추천

버튼누르면 텍스트가 사라지고 또 누르면 다시 텍스트가 생기는 코딩입니다. 코드상에는 에러가 없다고 뜨던데 실행하면 unfortunately 뜨네요 초보라 정말 모르겠습니다 자세히 부탁드려요 ㅠ

 

package com.example.jinmin.myapplication;

import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.app.Activity;

public class MainActivity extends AppCompatActivity {

    boolean isVisibleText = true;
    TextView textView;


    @Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (isVisibleText)
        {
            textView.setVisibility(View.INVISIBLE);
            isVisibleText = false; .
        }
         else {
textView.setVisibility(View.VISIBLE);
            isVisibleText = true;
        }
    }
}

 

로그캣입니다--
--------- beginning of crash
09-21 12:37:48.745 6085-6085/com.example.jinmin.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.jinmin.myapplication, PID: 6085
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.jinmin.myapplication/com.example.jinmin.myapplication.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setVisibility(int)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setVisibility(int)' on a null object reference
at com.example.jinmin.myapplication.MainActivity.onCreate(MainActivity.java:24)
at android.app.Activity.performCreate(Activity.java:6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
09-21 12:38:04.786 6085-6085/com.example.jinmin.myapplication I/Process: Sending signal. PID: 6085 SIG: 9
09-21 12:41:39.273 6417-6417/com.example.jinmin.myapplication W/System: ClassLoader referenced unknown path: /data/app/com.example.jinmin.myapplication-2/lib/x86
09-21 12:41:39.419 6417-6417/com.example.jinmin.myapplication W/System: ClassLoader referenced unknown path: /data/app/com.example.jinmin.myapplication-2/lib/x86
09-21 12:41:39.509 6417-6417/com.example.jinmin.myapplication W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
09-21 12:41:39.621 6417-6417/com.example.jinmin.myapplication D/AndroidRuntime: Shutting down VM
09-21 12:41:39.622 6417-6417/com.example.jinmin.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.jinmin.myapplication, PID: 6417
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.jinmin.myapplication/com.example.jinmin.myapplication.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setVisibility(int)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setVisibility(int)' on a null object reference
at com.example.jinmin.myapplication.MainActivity.onCreate(MainActivity.java:24)
at android.app.Activity.performCreate(Activity.java:6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
09-21 12:41:45.758 6417-6417/com.example.jinmin.myapplication I/Process: Sending signal. PID: 6417 SIG: 9

신전떡볶이 (480 포인트) 님이 2016년 9월 21일 질문
isVisibleText 변수를 사용하시는 것보다 해당 값을 읽을 수 있는 메소드를 만드셔서 사용하세요.

private boolean isVisibleText() {
     return textView.getVisibility() == View.VISIBLE ? true : false;
}

if (isVisibleText()) {

} else {

}

2개의 답변

+1 추천
 
채택된 답변

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setVisibility(int)' on a null object reference

라고 합니다...

자세히 보시면 Null Pointer 오류이며, Null 객체를 통해 setVisibility() 함수를 호출하여 오류가 발생했음을 알 수 있습니다.

 

결론은 TextView textView에 올바른 객체를 대입하여 사용하시면 됩니다.

비애천사 (12,080 포인트) 님이 2016년 9월 22일 답변
신전떡볶이님이 2016년 9월 22일 채택됨
0 추천

 textView 바인딩을 안하셨네요..

 textView = (TextView) findviewbyid(R.id.텍스트id);

헬프미 (5,430 포인트) 님이 2016년 9월 22일 답변
...