728x90
FirstFragment
package com.ej.datatransfer.fragment
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.os.bundleOf
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.*
import androidx.navigation.fragment.findNavController
import com.ej.datatransfer.R
import com.ej.datatransfer.ResultActivity
import com.ej.datatransfer.databinding.ActivityMainBinding
import com.ej.datatransfer.databinding.FragmentFirstBinding
import com.ej.datatransfer.viewmodel.MainViewModel
class FirstFragment : Fragment() {
lateinit var firstFragmentBinding: FragmentFirstBinding
val mainViewModel by activityViewModels<MainViewModel>()
// 암시적 인텐트
lateinit var getContent: ActivityResultLauncher<String>
// 명시적 인텐트
lateinit var startActivityForResult : ActivityResultLauncher<Intent>
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
firstFragmentBinding = DataBindingUtil.inflate(inflater,R.layout.fragment_first,container,false)
// 갤러리에서 사진 갖고오기
getContent = registerForActivityResult(
ActivityResultContracts.GetContent()){
firstFragmentBinding.imageView.setImageURI(it)
}
// 다른 액티비티에서 결과 갖고오기
startActivityForResult = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) {activityResult ->
activityResult.data?.let { intent ->
intent.extras?.let { bundle ->
Log.d("FirstFragment","result : ${bundle.getString("data","world")}")
}
}
}
return firstFragmentBinding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
// 다른 액티비티로 이동
firstFragmentBinding.secondBtn.setOnClickListener {
Intent(requireContext(),ResultActivity::class.java).apply {
startActivityForResult.launch(this)
}
}
// 갤러리로 이동
firstFragmentBinding.thirdBtn.setOnClickListener {
// MIME TYPE
getContent.launch("image/*")
}
// firstFragmentBinding.thirdBtn.setOnClickListener {
// findNavController().navigate(R.id.action_firstFragment_to_thirdFragment)
// }
}
}
ResultActivity
package com.ej.datatransfer
import android.app.Activity
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.databinding.DataBindingUtil
import com.ej.datatransfer.databinding.ActivityMainBinding
import com.ej.datatransfer.databinding.ActivityResultBinding
class ResultActivity : AppCompatActivity() {
lateinit var resultActivityBinding : ActivityResultBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
resultActivityBinding = DataBindingUtil.setContentView(this, R.layout.activity_result)
resultActivityBinding.resultBtn.setOnClickListener {
val intent = Intent()
intent.putExtra("data","hello")
setResult(Activity.RESULT_OK,intent)
}
}
}
728x90
'안드로이드 > Activity' 카테고리의 다른 글
안드로이드 Activity Action (0) | 2022.06.09 |
---|---|
안드로이드 다른 애플리케이션의 액티비티 실행 (0) | 2022.06.09 |
안드로이드 객체 전달 (0) | 2022.06.09 |
안드로이드 activity 데이터 전달 (0) | 2022.06.09 |
안드로이드 OnActivityResult (0) | 2022.06.09 |