[Android/Kotlin]DatePicker 구현

hyihyi·2023년 6월 22일
1

Activity를 Dialog 형식으로 띄우기

출력 화면


코드

<MainActivity.kt>

package com.example.alertdialog

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.*
import androidx.databinding.DataBindingUtil
import com.example.alertdialog.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    private lateinit var binding : ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = DataBindingUtil.setContentView(this,R.layout.activity_main)

        val startDate  = findViewById<TextView>(R.id.startDate)
        val endDate = findViewById<TextView>(R.id.endDate)

        // mainBtn을 누르고 StartDate값을 입력받음
        binding.mainBtn.setOnClickListener {
            val intent = Intent(this, StartDateActivity::class.java)
            // StartDate값은 입력받아야 하니 EndDate값만 보냄
            intent.putExtra("MaintoEndDate", endDate.text.toString())
            startActivity(intent)
        }

        // mainBtn2을 누르고 EndDate값을 입력받음
        binding.mainBtn2.setOnClickListener {
            val intent = Intent(this, EndDateActivity::class.java)
            // EndDate값은 입력받아야 하니 StartDate값만 보냄
            intent.putExtra("MaintoStartDate", startDate.text.toString())
            startActivity(intent)
        }


        // EndDateActivity에서 보낸 값을 화면에 표시
        if (intent.getStringExtra("JudgetoMain") == "EndtoMain"){
            val a = intent.getStringExtra("StartDatetoMain")
            val b = intent.getStringExtra("EndDatetoMain")
//            Log.d("TAGGGGG", "end에서 가져온 startdate의 값 : " + a.toString())
//            Log.d("TAGGGGG", "end에서 가져온 enddate의 값 : " + b.toString())
            startDate.text = a
            endDate.text = b
        }
        // StartDateActivity에서 보낸 값을 화면에 표시
        else if (intent.getStringExtra("JudgetoMain") == "StarttoMain"){
            val a = intent.getStringExtra("StartDatetoMain")
            val b = intent.getStringExtra("EndDatetoMain")
//            Log.d("TAGGGGG", "start에서 가져온 startdate의 값 : " + a.toString())
//            Log.d("TAGGGGG", "start에서 가져온 enddate의 값 : " + b.toString())
            startDate.text = a
            endDate.text = b
        }

    }

}

<StartActivity.kt>

package com.example.alertdialog

import android.annotation.SuppressLint
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.view.Window
import android.widget.Button
import android.widget.DatePicker
import android.widget.TextView
import java.util.*

class StartDateActivity : AppCompatActivity(), View.OnClickListener {

    @SuppressLint("SetTextI18n", "MissingInflatedId")
    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)
        requestWindowFeature( Window.FEATURE_NO_TITLE );
        setContentView(R.layout.activity_start_date)

        val button = findViewById<Button>(R.id.button)
        button.setOnClickListener(this)
    }

    @SuppressLint("SetTextI18n")
    //Dialog의 Button을 눌렀을 때
    override fun onClick(view: View?) {

        val textView = findViewById<TextView>(R.id.textView)
        val datePicker = findViewById<DatePicker>(R.id.datePicker)

        val endDate = intent.getStringExtra("MaintoEndDate")

//        Log.d("TAGGGGG", "Main에서 가져온 startdate의 값 : " + a.toString())
//        Log.d("TAGGGGG", "Main에서 가져온 enddate의 값 : " + b.toString())

        textView.text = datePicker.year.toString() + "/" +
                (datePicker.month + 1).toString() + "/" + datePicker.dayOfMonth.toString()

        val intent = Intent(this, MainActivity::class.java)
        intent.putExtra("JudgetoMain", "StarttoMain")
        intent.putExtra("StartDatetoMain", textView.text.toString())
        intent.putExtra("EndDatetoMain", endDate.toString())
        startActivity(intent)

    }
}

<EndActivity.kt>

package com.example.alertdialog

import android.annotation.SuppressLint
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.view.Window
import android.widget.Button
import android.widget.DatePicker
import android.widget.TextView
import androidx.core.content.ContextCompat.startActivity
import java.util.*

class EndDateActivity : AppCompatActivity(), View.OnClickListener {

    @SuppressLint("SetTextI18n", "MissingInflatedId")
    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)
        requestWindowFeature( Window.FEATURE_NO_TITLE );
        setContentView(R.layout.activity_start_date)

        val button = findViewById<Button>(R.id.button)
        button.setOnClickListener(this)

    }

    @SuppressLint("SetTextI18n")
    //Dialog의 Button을 눌렀을 때
    override fun onClick(view: View?) {

        val textView2 = findViewById<TextView>(R.id.textView)
        val datePicker2 = findViewById<DatePicker>(R.id.datePicker)

        val startDate = intent.getStringExtra("MaintoStartDate")

//        Log.d("TAGGGGG", "Main에서 가져온 startdate의 값 : " + a.toString())
//        Log.d("TAGGGGG", "Main에서 가져온 enddate의 값 : " + b.toString())

        textView2.text = datePicker2.year.toString() + "/" +
                (datePicker2.month + 1).toString() + "/" + datePicker2.dayOfMonth.toString()

        val intent = Intent(this, MainActivity::class.java)
        intent.putExtra("JudgetoMain", "EndtoMain")
        intent.putExtra("StartDatetoMain", startDate.toString())
        intent.putExtra("EndDatetoMain", textView2.text.toString())
        startActivity(intent)


    }
}

https://github.com/kimnahee1529/AndroidFunction/tree/master/AlertDialog_DatePicker

profile
내가 이해하기 쉽게 쓰는 블로그

2개의 댓글

comment-user-thumbnail
2023년 6월 22일

잘보고갑니다..DatePicker를 알아갑니다.

1개의 답글