我有一个问题 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()
不叫
我认为这是因为你没有创建另一个意图来发送信息,请这样做,并检查是否对你有效。
在你的详细活动中这样做,而不是在你的代码中粘贴这个。
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框架本身处理的。
替换
val returnIntent = intent
对于
val returnIntent = new Intent()
似乎我在适配器上声明了2个监听器,所以startActivityForResult不会启动。