sooleeandtomas

코틀린 화면 구성하기 본문

코틀린/kotlin

코틀린 화면 구성하기

sooleeandtomas 2021. 9. 18. 23:30

#MainActivity

fun clickNewActivity(view:View){
	Toast.makeText(view.context, "하이", Toast.LENGTH_SHORT).show();
    
    var intent = Intent(this, newActivity::class.java)
    //this: 출발 컨텍스트(맥락, 어느화면)(this@MainAcitivyty) -> newActivity: 도착
    //newActivity 와 newActivity::class.java는 다르다. 
 	intent.putExtra("PersonalKey", "ISTJ")
    startActivity(intent)
}

 

리플랙션(Reflection)이란

코틀린에서 더블콜론(::)은 리플렉션을 위해 사용한다. 리플렉션이란 코드를 작성하는 시점에는 런타임상 컴파일된 바이트 코드에서 내가 작성한 코드가 어디에 위치하는지 알 수 없기 때문에 바이트 코드를 이용해 내가 참조하려는 값을 찾기위해 사용한다.

 

#NewActivity

//Toast로 띄우기
fun(){
 ...
 var personalKey = intent.getStringExtra("PersonalKey")
 //mainActivity에서 설정한 putExtra("Key", "Value")의 key값을 통해서 가져온다.
 Toast.makeText(this, personalKey, Toast.LENGTH_SHORT).show()
}

//TextView로 띄우기
class newActivity: AppCompactActivity(){
	private lateinit var textView: TextView;
	fun(){
		...
		var value = intent.getStringExtra("PersonalKey")
        
		textView = findViewById(R.id.textView)
		textView.text = value;
	}
}

 

#반복 렌더링 처리하기

class MainActivity : AppCompatActivity(){
	override fun onCreate(savedInstanceState: Bundle?){
    	super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
    
    fun clickTypeButton(view: View){
    	var button = view as Button
        //view > button 
        var myIntent = Intent(this@MainActivity, DetailActivity::class.java)
        // from @MainActivity to DetailActivity
        //공유할 수 있는 Activity를 설정
        myIntent.putExtra("PersonalKey", button.text)
        //버튼의 내용을 가져옴
        startActivity(intent)
    }
}

class DetailActivity : AppCompatActivity(){
	private lateinit var textView: TextView
    
    override fun onCreate(savedInstanceState: Bundle?){
    	super.onCreate(savedInstaceState)
        setContentView(R.layout.activiy_detail)
        
        var personalKey = intent.getStringExtra("PersonalKey")
        textView = findViewById(R.id.textView)
        textView.text= personalKey
    }
}
Comments