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

안드로이드 스튜디오 데이터베이스 nullpointerexception 오류

0 추천

메모장 프로젝트를 만드려고 합니다.

 

메인액티비티는 조회화면이고 메인 액티비티에 있는 fab을 누르면 content액티비티로 넘어가게 되고,

content액티비티에서 제목과 내용을 저장할 수 있는 프로젝트입니다.

 

//MainActivity.java
public class MainActivity extends AppCompatActivity implements OnDatabaseCallback {
    private static final String TAG = "tag";
    ContentDatabase database;
    OnDatabaseCallback callback;
    ContentAdapter contentAdapter;
    RecyclerView recyclerView_content;

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

        contentAdapter = new ContentAdapter();

        recyclerView_content = findViewById(R.id.recyclerView_content);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        recyclerView_content.setLayoutManager(layoutManager);

        recyclerView_content.setAdapter(contentAdapter);

        ArrayList<Content> result = callback.selectAll();
        contentAdapter.setItems(result);

    }

    @Override
    public ArrayList<Content> selectAll() {
        ArrayList<Content> result = database.selectAll();

        return result;
    }

}

 

이렇게 메인 액티비티 화면이 구성되어 있고 

 

 

이렇게 content액티비티가 구성되어있는데 ArrayList<Content> result = callback.selectAll(); 부분에서

' --- OnDatabaseCallback.selectAll()' on a null object reference 오류가 발생합니다.

 

public interface OnDatabaseCallback {
    public void insert(String title, String content);
    public ArrayList<Content> selectAll();
    public void delete(int _id);

}

 

public class ContentDatabase {

    --생략--

    private class DatabaseHelper extends SQLiteOpenHelper {
        public DatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
--생략--
    public ArrayList<Content> selectAll() {
        ArrayList<Content> result = new ArrayList<Content>();

        --cursor를 이용한 조회방법 생략--
        
        return result;
    }
}

 

--참고로 Content는 title과 content getter, setter를 generate 해놓은 클래스입니다--

 

리사이클러뷰에서 조회할 때 selectAll()에서 왜 NullPointer오류가 발생하는지 모르겠습니다.

ContentActivity에서 아직 저장을 해놓은 데이터가 존재하지 않아 selectAll()을 할 것이 없기 때문에 오류가 생기는 것인가요?

 

 

 

쿠롱 (400 포인트) 님이 2023년 7월 26일 질문

1개의 답변

+1 추천
callback 변수를 어디에서 초기화하고 있나요?
spark (227,530 포인트) 님이 2023년 7월 26일 답변
우선적으로 callback 변수를 초기화 시키고 있지 않았네요.

감사합니다
...