如何将列表数据从 Activity A 发送到 Activity B 并编辑 Activity B 中的数据
How to send a list data from Activity A to Activity B and edit the data inside Activity B
我想从 Activity A 发送一个列表到 Activity B。当我收到 Activity B 中的数据时,我想对收到的列表进行更改项目。当我回到 Activity A 时,我想看看我刚刚所做的更改。到目前为止,我已经尝试使用意图发送数据列表,但是当我尝试编辑它时,没有进行更改。这是我的代码示例:
Activity一个
private var items : Lists<Items>
context.startActivity(
Intent(context, B::class.java).apply {
putExtra("itemList", items as ArrayList)
}
)
Activity B
val itemList = intent?.extras?.getSerializable("itemList") as? ArrayList<Items>
// trying to edit the list
itemList.forEachIndexed { index, t ->
run {
if (t.id == tweet.id) {
items[index].name = "hello"
}
}
}
基本上你可以在这种情况下使用startActivityForResult
我举个例子解释一下
从您的 FirstActivity
使用 startActivityForResult()
方法调用 SecondActivity
例如:
int LAUNCH_SECOND_ACTIVITY = 1
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, LAUNCH_SECOND_ACTIVITY
在您的 SecondActivity
中,将您想要 return 的数据设置回 FirstActivity
。如果您不想return返回,请不要设置。
例如:在SecondActivity
如果要发回数据:
Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();
现在在您的 FirstActivity
class 中,为 onActivityResult()
方法编写以下代码。
Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == LAUNCH_SECOND_ACTIVITY) {
if(resultCode == Activity.RESULT_OK){
String result=data.getStringExtra("result");
}
if (resultCode == Activity.RESULT_CANCELED) {
// Write your code if there's no result
}
}
} //onActivityResult
感谢this回答。您可以查找更多详细信息
我想从 Activity A 发送一个列表到 Activity B。当我收到 Activity B 中的数据时,我想对收到的列表进行更改项目。当我回到 Activity A 时,我想看看我刚刚所做的更改。到目前为止,我已经尝试使用意图发送数据列表,但是当我尝试编辑它时,没有进行更改。这是我的代码示例:
Activity一个
private var items : Lists<Items>
context.startActivity(
Intent(context, B::class.java).apply {
putExtra("itemList", items as ArrayList)
}
)
Activity B
val itemList = intent?.extras?.getSerializable("itemList") as? ArrayList<Items>
// trying to edit the list
itemList.forEachIndexed { index, t ->
run {
if (t.id == tweet.id) {
items[index].name = "hello"
}
}
}
基本上你可以在这种情况下使用startActivityForResult
我举个例子解释一下
从您的 FirstActivity
使用 startActivityForResult()
方法调用 SecondActivity
例如:
int LAUNCH_SECOND_ACTIVITY = 1
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, LAUNCH_SECOND_ACTIVITY
在您的 SecondActivity
中,将您想要 return 的数据设置回 FirstActivity
。如果您不想return返回,请不要设置。
例如:在SecondActivity
如果要发回数据:
Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();
现在在您的 FirstActivity
class 中,为 onActivityResult()
方法编写以下代码。
Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == LAUNCH_SECOND_ACTIVITY) {
if(resultCode == Activity.RESULT_OK){
String result=data.getStringExtra("result");
}
if (resultCode == Activity.RESULT_CANCELED) {
// Write your code if there's no result
}
}
} //onActivityResult
感谢this回答。您可以查找更多详细信息