남해밤바다
429
2021-07-14 20:46:16 작성 2021-07-14 22:11:57 수정됨
2
172

안드로이드 개발 중 'XXX 앱을 중지했습니다' 메세지와 강제 종료


안녕하세요,

안드로이드 개발에 관심을 가진 초보 안드로이드 입문자입니다!

오늘 https://youtu.be/EKCQ6sxMWNo 'Intent 화면 전환하기' 짧은 영상을 따라하는 중에 알 수 없는 버그에 직면했습니다ㅜㅜㅜ

해당 영상을 따라 똑같이 코딩해서 제 폰에 빌드하고 앱을 실행해보았는데,

버튼을 누르면 subActivity로 화면이 넘어가지 않고 제목처럼 'XXX  앱을 중지 했습니다'라는 메세지가 나타나면서 강제 종료가 됩니다;; (가상머신에도 똑같은 현상이 나타납니다.)




이 예제는 첫 그림처럼 EditText에 입력값을 넣고 버튼을 누르면 subActivity로 넘어가 입력한 값을 그 페이지에 출력시키는 예제입니다만, 두 번째의 메세지가 나타나면서 강제 종료가 됩니다...

저 영상을 여러 번 보고 다시 시도했지만 같은 현상이 나타나 부득이하게 여기에 물어봅니다ㅜㅜ (아래에 질문 내용 계속 이어집니다!)


https://github.com/wizard0987/Beginning-Android/tree/main/Study03Intent

- activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<EditText
android:id="@+id/et_test"
android:layout_width="200dp"
android:layout_height="wrap_content" />

<Button
android:id="@+id/btn_move"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="이동" />

</LinearLayout>


- activity_sub.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SubActivity">

<TextView
android:id="@+id/tv_sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:text="서브 엑티비티 이동 완료!" />

</LinearLayout>


- MainActivity.java

public class MainActivity extends AppCompatActivity {

private Button btn_move;
private EditText et_test;
private String str;

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

et_test = findViewById(R.id.et_test);
btn_move = findViewById(R.id.btn_move);

btn_move.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
str = et_test.getText().toString();
Intent intent = new Intent(MainActivity.this, SubActivity.class);
intent.putExtra("str", str);
startActivity(intent);
}
});

}
}


- SubActivity.java

public class SubActivity extends AppCompatActivity {

private TextView tv_sub;

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

tv_sub.findViewById(R.id.tv__sub);

Intent intent = getIntent();
String str = intent.getStringExtra("str");

tv_sub.setText(str);

}
}


EditText에 입력 값을 넣고 버튼을 누르면, 위 SubActivity.java의 빨간색 표시 부분에서 NullPointException 예외가 발생합니다. TextView 객체 tv_sub가 findViewById 함수를 통해 값을 얻어올텐데 왜 null이 반환되는 걸까요??

0
  • 답변 2

  • HSYE
    226
    2021-07-14 21:21:14

    ㅎㅎ... 유튜브 영상과 질문자님께서 작성하신 코드에 다른 부분이 있네요.

    어느 부분인지는 알려드리지 않겠습니다. 직접 찾는 게 실력 향상에 도움이 될테니 ^^..

  • 남해밤바다
    429
    2021-07-14 22:15:31

    @HSYE 님

    아이고야 너무 초보적인 실수였군요;; 알려주셔서 너무 감사합니다

    덕분에 기억에 남겠네요ㅋㅋㅋ

  • 로그인을 하시면 답변을 등록할 수 있습니다.