kotlin startActivityForResult基本用法

例子来源Android示例

示例描述:

点击FlowersListActivity中的按钮fabButton跳转到添加item的AddFlowerActivity,在AddFlowerActivity中添加花卉的名称和描述两个信息,如果两个均不为空则添加成功,返回到FlowersListActivity中展示。

1、fabOnClick点击后跳转至AddFlowerActivity:

/* 单击FAB时将花添加到flowerList. */    
    private fun fabOnClick() {
        val intent = Intent(this, AddFlowerActivity::class.java)
        startActivityForResult(intent, newFlowerActivityRequestCode)
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, intentData: Intent?) {
        super.onActivityResult(requestCode, resultCode, intentData)

        /* Inserts flower into viewModel. */
        if (requestCode == newFlowerActivityRequestCode && resultCode == Activity.RESULT_OK) {
            intentData?.let { data ->
                val flowerName = data.getStringExtra(FLOWER_NAME)
                val flowerDescription = data.getStringExtra(FLOWER_DESCRIPTION)

                flowersListViewModel.insertFlower(flowerName, flowerDescription)
            }
        }
    }

2、添加花卉的描述信息并设置setResult,finish自身返回到上一个activity。

    /* 完成按钮的onClick动作。关闭活动并作为意图的一部分返回新的花名和描述。如果缺少名称或描述,则将结果设置为“取消”*/

    private fun addFlower() {
        val resultIntent = Intent()

        if (addFlowerName.text.isNullOrEmpty() || addFlowerDescription.text.isNullOrEmpty()) {
            setResult(Activity.RESULT_CANCELED, resultIntent)
        } else {
            val name = addFlowerName.text.toString()
            val description = addFlowerDescription.text.toString()
            resultIntent.putExtra(FLOWER_NAME, name)
            resultIntent.putExtra(FLOWER_DESCRIPTION, description)
            setResult(Activity.RESULT_OK, resultIntent)
        }
        finish()
    }

3、跳转回原来FlowersListActivity,在onActivityResult中进行后续处理,本例中是获取到了两个添加花卉的参数

猜你喜欢

转载自blog.csdn.net/cpcpcp123/article/details/113120226
今日推荐