백준 2442번
별찍기
별들을 출력할때 중앙정렬해서 출력하기
각줄마다 별의 n에서 개수만큼 빼준 값을 공백의 개수로 넣어준다.
나의 코드
fun main() {
val n = readLine()!!.toInt()
for (i in 1..n) {
for (j in 1..n - i) {
print(" ")
}
for (j in 1..2*i -1) {
print("*")
}
println()
}
}
프래그먼트는 앱의 UI부분을 모듈화하여 재사용할 수 있도록 해주는 구성요소로 자체적인 생명주기를 가지고 액티비티의 생명주기와 밀접하게 연결되어있다.
onCreate()
가 완료된 후 호출(뷰 관련 초기화 수행)Activity로 화면을 계속 넘기는 것보다 Fragment로 일부만 바꾸는 것이 자원이용량이 적어 속도가 빠르다.
1. Activity를 적게 만들수 있다.
2. Activity의 복잡도를 줄일 수 있다.
3. Fragment를 사용하면 재사용할 수 있는 레이아웃을 분리해서 관리가 가능하다.
4. 최소 1개의 Activity안에서 Fragment공간에 View만 집어넣으면 여러 Activity를 만들지 않아도 여러화면을 보여줄 수 있다.
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:background="#FF9800"
tools:context=".FirstFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="프래그먼트 1" android:textSize="40sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
app:layout_constraintBottom_toTopOf="@+id/btn1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
class MainActivity : AppCompatActivity() {
private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(binding.root)
binding.apply {
btn1.setOnClickListener{
setFragment(FirstFragment())
}
btn2.setOnClickListener {
setFragment(SecondFragment())
}
} setFragment(FirstFragment())
}
private fun setFragment(frag: Fragment){
supportFragmentManager.commit {
replace(R.id.frameLayout, frag)
setReorderingAllowed(true)
addToBackStack("")
}
}
}
supportFragmentManager - 사용자 상호작용에 응답해 추가나 삭제 등 할 수 있게 해주는 매니저
replace - 어느 레이아웃에 어느 Fragment를 띄울 것인지 설정
setReorderingAllowed - 애니메이션과 전환이 올바르게 작동하도록 트랜잭션과 관련된 프래그먼트의 상태 변경을 최적화
addToBackStack - 뒤로가기 버튼 클릭시 다음 액션 (이전 Fragment로 가거나 앱을 종료)
supportFragmentManager설정 중에 commit이 비활성화된 문제발생
-> fragment dependencies 를 넣어줘야한다.
[versions]
fragement = "1.8.1"
[libraries]
androidx-fragment = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "fragement" }
dependencies{
implementation(libs.androidx.fragment)
}
name에 fragment
를 넣었는데 안돼서 fragment-ktx
로 바꿔주시 고쳐졌다.