当你开始一个新的 Activity 时,你可以发送额外的数据和一个 Intent。
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
if(dbHelper != null){
Item item = dbHelper.getProjectRowById(id);
// Put the data on your intent.
Intent intent = new Intent(getActivity(), Save.class);
// If Item implements Serializable or Parcelable, you can just send the item:
intent.putExtra("dataToEdit", item);
// Otherwise, send the relevant bit:
intent.putExtra("data1", item.getSomeDataItem());
intent.putExtra("data2", item.getAnotherDataItem());
// Or, send the id and look up the item to edit in the other activity.
intent.putExtra("id", id);
// Start your edit activity with the intent.
getActivity().startActivity(intent);
}
}
在编辑活动中,您可以获得启动它的 Intent。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(...);
Intent intent = getIntent();
if (intent.hasExtra("dataToEdit")) {
Item item = (Item) intent.getSerializableExtra("dataToEdit");
if (item != null) {
// find edittext, and set text to the data that needs editing
}
}
}
然后用户可以编辑该文本,您可以在他们单击保存或其他任何内容时将其保存到数据库中。然后调用finish
您的保存活动。
如果您需要将保存的数据发送回原始活动(而不是说,只是在 中重新查询onStart
),请查看startActivityForResult
. 如果你使用它,你可以setResult
在调用之前设置一个结果代码finish
。