添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
27
30

More than 5 years have passed since last update.

Activity間のObject引き渡し

Last updated at Posted at 2017-09-08

いくつか方法はあると思うが、
そんなに大したことないものにコードを沢山書きたくないので、
シンプルにobjectにSerializableをimplementsして引き渡す

Gsonを利用した例はコチラ
Activity間のObject引き渡し(Gson)

object

Activity間で引き渡すobject

DataState.kt
data class DataState(
    val id: Int,
    val name: String
): Serializable
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val intent = Intent(this, SecondActivity::class.java)
        val state = DataState(0, "name0")
        intent.putExtra(SecondActivity.KEY_STATE, state)
        startActivity(intent)

引き渡し先

SecondActivity.kt
class SecondActivity : AppCompatActivity() {
    companion object {
        val KEY_STATE = "key_state"
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)
        val state = intent.getSerializableExtra(KEY_STATE)
        if(state is DataState){
            println(state.id)
            println(state.name)
MainActivity.kt
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val states = arrayListOf<DataState>()
        for(i in 0..2){
            val state = DataState(i, "name$i")
            states.add(state)
        val intent = Intent(this, SecondActivity::class.java)
        intent.putExtra(SecondActivity.KEY_STATE, states)
        startActivity(intent)

引き渡し先

SecondActivity.kt
class SecondActivity : AppCompatActivity() {
    companion object {
        val KEY_STATE = "key_state"
    override fun onCreate(savedInstanceState: Bundle?) {
        super




    
.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)
        val states = intent.getSerializableExtra(KEY_STATE) as ArrayList<*>
        states.forEach {
            if(it is DataState){
                println(it.id)
                println(it.name)

GitHubに公開しました。
https://github.com/yoshihitoijichi/ActivityIntentObjectSample

27
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
30