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

NullPointerException의 발생원인을 모르겠습니다....

0 추천

소스코드입니다

package com.example.training;

import android.content.Context;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.TextView;


public class DbAdapter extends CursorAdapter {
    int total = 0;
    public DbAdapter(Context context, Cursor c){
        super(context, c);
    }
    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View v = inflater.inflate(R.layout.listview_item,parent,false);
        return v;

    }

    @Override
    public void bindView(View view, Context context, Cursor cursor){
        final TextView name = (TextView)view.findViewById(R.id.item_text1);
        final TextView calorie = (TextView)view.findViewById(R.id.item_text2);
        final Button add = (Button)view.findViewById(R.id.item_btn1);
        final Button cancel = (Button)view.findViewById(R.id.item_btn2);
        final TextView result = (TextView)view.findViewById(R.id.totalcal);



        name.setText(cursor.getString(cursor.getColumnIndex("foodname")));
        calorie.setText(cursor.getString(cursor.getColumnIndex("calorie")));
        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int foodcal = Integer.parseInt(calorie.getText().toString());
                total=total+foodcal;
                result.setText(Integer.toString(Math.round(total))+"kcal");
            }
        });
       cancel.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               int foodcal = Integer.parseInt(calorie.getText().toString());
               total = total-foodcal;
               result.setText(Integer.toString(Math.round(total))+"kcal");
           }
       });

    }


    }
에러로그입니다.
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.training, PID: 23813
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
        at com.example.training.DbAdapter$1.onClick(DbAdapter.java:44)
        at android.view.View.performClick(View.java:7125)
        at android.view.View.performClickInternal(View.java:7102)
        at android.view.View.access$3500(View.java:801)
        at android.view.View$PerformClick.run(View.java:27336)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7343)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:933)
익명사용자 님이 2019년 8월 20일 질문
로그로는 TextView result 값이  null 이라 나오는 듯 합니다.
R.id.totalcal 값이 맞는지 확인해 보세요

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...