Android 将数据从一个活动设置为另一个活动
我有一个ListFragment,我想在列表视图中单击时编辑该项 我正在使用这种方法Android 将数据从一个活动设置为另一个活动,android,android-intent,Android,Android Intent,我有一个ListFragment,我想在列表视图中单击时编辑该项 我正在使用这种方法 @Override public void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); if(dbHelper != null){ Item item = dbHelper.ge
@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);
Intent intent = new Intent(getActivity(), Save.class);
//Here i want to start the activity and set the data using item.
}
}
如何在上述方法中设置数据
提前感谢您可以在开始新活动时发送附加数据和意向
@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);
}
}
在“编辑”活动中,可以获取启动该活动的意图
@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
中重新查询),请查看。如果使用该选项,则可以在调用finish
use之前设置结果代码
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
if(dbHelper != null){
//don't do this here Item item = dbHelper.getProjectRowById(id);
Intent intent = new Intent(getActivity(), Save.class);
intent.putExtra("MyItemId", id);
}
}
在第二个活动中,您将获得Id并使用
Bundle extras = getIntent().getExtras();
long id = extras.getInt("MyItemId");
Item item = dbHelper.getProjectRowById(id);
你在那里也需要帮助。如果您只需要一个实例,请将其作为应用程序类的一个变量。您的要求并不明确,为什么不起作用?我已经重新表述了这个问题。我明白了,您的
保存
活动有一个编辑文本
或某种编辑数据的方式?