반응형
포스팅 날짜 : 2019-07-30
Android Studio 버전 : 3.4.2
사용언어 : Kotlin
Android에서 Kotlin을 이용하여 개발하는중에 Activity1에서 Activity2로 데이터를 통신하는 부분을 구현하고 있었습니다.
Activity2에서 Intent를 이용하여 데이터를 수신한뒤에 TextView에 setText를 하는게 목적이었는데 제목과 같은 에러가 발생했습니다.
"java.lang.IllegalStateException: TextView must not be null"
Activity1에서는 Intent로 정상적으로 데이터를 송신했는데, Activity2에서 오류가 났습니다. 코드는 다음과 같습니다.
Activity1에서 버튼을 클릭하면 Intent로 String을 보내는 코드입니다.
class Activity1 : AppCompatActivity() {
....// 생략
override fun onStart() {
super.onStart()
// onButtonClick
btn_start.setOnClickListener(View.OnClickListener{
val intent = Intent(activity, Activity2::class.java).apply {
putExtra("String", "Hello World")
}
startActivity(intent)
Log.d(TAG, "onClick successful!")
})
}
}
Activity2에서는 다음과 같습니다.
class Activity2 : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if(intent.hasExtra("String")) {
var received = intent.getStringExtra("String")
if(received != null) {
textview_presentation.text = received
}
} else {
Toast.makeText(this, "전달된 Hello World가 없습니다.", Toast.LENGTH_SHORT).show()
}
}
}
알고 보니 아주 간단한 오류였습니다. Activity2의 onCreate()시에 setContentView가 없습니다.
Layout이 없는상태에서 Layout위의 TextView에 전달받은 String을 복사하려고하니 null이라고 판단하여 에러가 발생합니다.
class Activity2 : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_activity2)
if(intent.hasExtra("String")) {
var received = intent.getStringExtra("String")
if(received != null) {
textview_presentation.text = received
}
} else {
Toast.makeText(this, "전달된 Hello World가 없습니다.", Toast.LENGTH_SHORT).show()
}
}
}
super.onCreate(savedInstanceState) 아래에 setContentView를 호출하여 문제를 해결했습니다.
- stackoverflow를 찾아보니 TextView의 ID를 잘못 입력했을때도 발생한다고 하니 참고하시길 바랍니다.
참고 URL
반응형
'Development > Android' 카테고리의 다른 글
안드로이드 패키지명(PackageName)으로 설치여부 확인하는 방법 (0) | 2020.09.07 |
---|---|
안드로이드 설치된 앱 버전 읽어오기 (0) | 2020.09.07 |
안드로이드 가로모드(혹은 세로모드) 고정하는 방법. (0) | 2020.09.05 |
안드로이드10에서 클립보드 내용 가져오기. (0) | 2020.09.05 |
[Android - Kotlin] ResultReceiver 상속받을때 No value passed for parameter 'handler' 오류 (0) | 2019.07.23 |