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

Intent 사용시 Nullpointer 에러

0 추천

제가 지금 시간표 어플을 만들고 있는데요.. Mainactivity에서는 시간표를 확인하고 PopupActivity라는 서브 액티비티에서 시간표 입력을 하는 방식입니다.

PopupActivity에서 intent 값을 이용해서 Mainactivity에 넘겨주는 값중에 TextView id가 있습니다. 이건 Spinner에서 받은 값인데 이 id를 가진 TextView에서 setText를 해주려고 하니까 에러가 뜨네요 ㅠㅠ

 Mainactivity

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setLayout();
        Intent intent = getIntent(); 
        int id = intent.getIntExtra("classtime",1);

        for (int i = 0; i < textViews.length; i++) {
            textViews[i] = (TextView) findViewById(idArray[i]);
            if (idArray[i] == id)
                select_time = (TextView) findViewById(idArray[i]);
        }

        if (intent =! null) {
             lecture = intent.getStringExtra("lecture");
             classroom = intent.getStringExtra("classroom");

        }
        select_time.setText(lecture);
        intent.putExtra("re","return");
        setResult(RESULT_OK,intent);
        finish();
    }
    public void onClick(View view) {
                startActivity( new Intent(this, PopupActivity.class) );
    }
    private void setLayout(){
        return_button = (Button) findViewById(R.id.popup);
        return_button.setOnClickListener(this);
    }
}

 PopupActivity

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.popup_activity);
    ArrayList arrayList = new ArrayList();

}
public void mOnClose(View v){

    Intent intent = new Intent(this,MainActivity.class);
    intent.putExtra("lecture",enterlectrue.getText().toString());
    intent.putExtra("classroom",enterroom.getText().toString());
    intent.putExtra("classtime",spinner.getSelectedItemId());
    startActivityForResult(intent,1);
   
    finish();

}

 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
        at de.hsulm.moad.timetable.MainActivity.onCreate(MainActivity.java:51)

에러 메세지가 이렇게 나는데 51번 줄이 setText부분입니다 ㅠㅠ

Oncreate에서 처음 생성될때 select_time에 아무것도 들어있지 않아서 에러가 뜨는건가 하고 다른 id로 연결을 해줬는데도 똑같이 에러가 나네요 ㅠㅠ 도와주세요 ㅠㅠ

Ulmer (140 포인트) 님이 2019년 1월 23일 질문
Ulmer님이 2019년 1월 23일 수정

1개의 답변

0 추천
if (idArray[i] == id) 만족하는 조건이 없어 NullPointerException 가 발생한 듯 합니다.

    intent.putExtra("classtime",spinner.getSelectedItemId()); 로 넘기시던데, 선택된 아이템 아이디가 원하시는 값이 아닐 겁니다. 아마 레이아웃 아이디가 아니라. 선택한 아이디의 row 숫자가 들어갔을 겁니다.

spinner 의 아이템 값이 어떻게 되는지 모르겠으나,  아마도,

    intent.putExtra("classtime",(int)spinner.getSelectedItem()); 같은 값을 넘기시면 해결 될 듯 합니다.
익명사용자 님이 2019년 1월 23일 답변
...