[Android Studio] intent 활용 시 Activity 전환안되고 종료됨

이도연·2023년 8월 22일
1

trouble shooting

목록 보기
4/12
  • 이슈
    title (제목)과 memo(내용)을 둘다 입력하고 post button 을 누르면 다른 액티비티로 전환하고 싶은데 자꾸 꺼진다.

.
.
.

package com.test.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import android.content.Intent


class NewPost : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_newpost)

        val title = findViewById<EditText>(R.id.et_title)
        val memo = findViewById<EditText>(R.id.et_memo)
        val post = findViewById<Button>(R.id.btn_post)

        val intent = Intent(this, OnePost::class.java)

        // 제목과 내용 둘 중 하나라도 입력 안되면 토스트 메시지 띄우기
        post.setOnClickListener {
            if (title.text.toString().trim().isEmpty() || memo.text.toString().trim()
                    .isEmpty()
            ) {
                Toast.makeText(this, "제목과 내용 모두 입력해주세요.", Toast.LENGTH_SHORT).show()
                return@setOnClickListener
            }
            
            
            // 버튼 클릭 시 OnePost 로 이동
            else {
                intent.putExtra("title", title.text.toString())
                startActivity(intent)
            }
        }
    }
}

.
.
.

package com.test.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import android.content.Intent


class NewPost : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_newpost)

        val title = findViewById<EditText>(R.id.et_title)
        val memo = findViewById<EditText>(R.id.et_memo)
        val post = findViewById<Button>(R.id.btn_post)


        // 제목과 내용 둘 중 하나라도 입력 안되면 토스트 메시지 띄우기
        post.setOnClickListener {
            if (title.text.toString().trim().isEmpty() || memo.text.toString().trim()
                    .isEmpty()
            ) {
                Toast.makeText(this, "제목과 내용 모두 입력해주세요.", Toast.LENGTH_SHORT).show()
                return@setOnClickListener
            }


            // 버튼 클릭 시 Topic 화면으로 이동
            else {
                val intent = Intent(this, OnePost::class.java)
                intent.putExtra("title", title.text.toString())
                startActivity(intent)
            }
        }
    }
}
  • 해결
    변수명 intent를 else 안에 넣지 않아서 꺼지는 거였다.

2개의 댓글

comment-user-thumbnail
2023년 8월 22일

저는 intent를 항상 안에서만 선언을 해서 밖에서 선언을 하면 오작동을 한다는 것을 처음 알았어요!! 좋은 정보 감사합니다.

답글 달기
comment-user-thumbnail
2023년 8월 22일

강의 내용인가요?? 열심히 하신 것 같아요! 수고 많으셨습니다 : )

답글 달기