onActivityResult()从未被调用

问题描述 投票:0回答:1

我有一个问题 onActivityResult()setResult().

我开始安卓开发1周前,所以对不起。

你能帮助我吗?

这里是我的代码的一个片段。

ListActivity函数Click

    val myadapter = ItemAdapter();
    list_recycler_view.layoutManager = LinearLayoutManager(this)
    list_recycler_view.adapter = myadapter
    val me = this;
        myadapter.setOnItemClickListener(object : ItemAdapter.OnItemClickListener {
            override fun onItemClick(item: Item) {
                val intent = Intent(me, DetailActivity::class.java)
                intent.putExtra("item", item)
                startActivityForResult(intent, 2)
            }
        })

列表活动函数onActivityResult

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        Log.d("reponse","coucou5");
        Log.d("reponse",requestCode.toString());
        Log.d("reponse",resultCode.toString());
        if (requestCode == 2 && resultCode == RESULT_OK) {

            val item = data?.getParcelableExtra<Item>("item") as Item
            Log.d("reponse-update",item.toString());
            if (item == null) {
                Toast.makeText(this, "Could not update! Error!", Toast.LENGTH_SHORT).show()
            }

            //ItemListViewModel.update(item);

        } else {
            Toast.makeText(this, "Note not saved!", Toast.LENGTH_SHORT).show()
        }
    }

点击时的详细活动功能

     btnSave.setOnClickListener{
            //other props
            item.gid = gid;
            item.distance = distance
            Log.d("reponse",item.toString());
            Log.d("reponse","coucou4");
            val returnIntent = intent
            returnIntent.putExtra("item", item)
            setResult(Activity.RESULT_OK, returnIntent)
            finish()
        }

看来 onActivityResult() 不叫

android kotlin android-activity onactivityresult
1个回答
1
投票

我认为这是因为你没有创建另一个意图来发送信息,请这样做,并检查是否对你有效。

在你的详细活动中这样做,而不是在你的代码中粘贴这个。

btnSave.setOnClickListener{
        //other props
        item.gid = gid;
        item.distance = distance
        Log.d("reponse",item.toString());
        Log.d("reponse","coucou4");
        Intent returnIntent = Intent();
        returnIntent.putExtra("item", item)
        setResult(2, returnIntent)
        finish()
    }

你正在传递RESULT_OK,这不是必需的,它是由Android框架本身处理的。


0
投票

替换

val returnIntent = intent

对于

val returnIntent = new Intent()

0
投票

似乎我在适配器上声明了2个监听器,所以startActivityForResult不会启动。

© www.soinside.com 2019 - 2024. All rights reserved.