Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将数据从一个活动设置为另一个活动_Android_Android Intent - Fatal编程技术网

Android 将数据从一个活动设置为另一个活动

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

我有一个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.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);

你在那里也需要帮助。如果您只需要一个实例,请将其作为应用程序类的一个变量。

您的要求并不明确,为什么不起作用?我已经重新表述了这个问题。我明白了,您的
保存
活动有一个
编辑文本
或某种编辑数据的方式?