Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.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_Lifecycle - Fatal编程技术网

Android 在片段/生命周期问题中收到项目后,从活动中删除项目

Android 在片段/生命周期问题中收到项目后,从活动中删除项目,android,lifecycle,Android,Lifecycle,我需要一些帮助。我有一个创建项目的活动。接下来,我想将它发送到第二个活动中的片段,所以我需要首先将它发送到该活动中(对吗?)。以下是我创建项目的方式: public void savePart() { Part part = new Part(name,quantity,"","",tag,"","2"); Intent intent = new Intent(this,InvActivity.class); intent.putExtra("Pa

我需要一些帮助。我有一个创建项目的活动。接下来,我想将它发送到第二个活动中的片段,所以我需要首先将它发送到该活动中(对吗?)。以下是我创建项目的方式:

public void savePart() {
        Part part = new Part(name,quantity,"","",tag,"","2");
        Intent intent = new Intent(this,InvActivity.class);
        intent.putExtra("Part", (Serializable) part);
        setResult(2,intent);
        finish();
    }
这是我在第二个活动中收到它的方式:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == 2) {
        part = (Part) data.getSerializableExtra("Part");
    }
}
我有方法返回片段中的零件:

public Part getMyData() {
        return part;
    }
在Fragment的onResume()中,我收到Part对象,检查是否存在具有类似代码的对象,如果不存在,则将其添加到ListView:

@Override
    public void onResume() {

    super.onResume();
    List<Part>subList = new ArrayList<>();
    if (mActivity.getMyData() != null) {
        Part part = mActivity.getMyData();
        for(Part parts : mParts) {
            if (parts.getCode().contains(part.getCode())) {
                subList.add(parts);
            }
        }
        if (subList.size() == 0) {
            mParts.add(part);
            adapter = new PartAdapter(getContext(), R.layout.part_item, mParts, mActivity, new AdapterCallback() {
                @Override
                public void onMethodCallback() {

                }
            });
            mPartsLV.setAdapter(adapter);
        } else {
            Toast.makeText(getContext(), R.string.equipment_exists, Toast.LENGTH_SHORT).show();
        }
    }

}

这对我很有用,但是。。。当片段返回onResume()时,删除的项再次显示为ListView。这是因为每次我收到零件并检查列表中是否存在零件。我想我应该在收到活动中创建的零件后,以某种方式明确意图,但我不知道如何创建零件?也许还有其他的解决办法

将您的
子列表声明为public并填充一次。因此,您需要稍微修改一下您的
onResume
功能。检查列表是否已填充。如果不是,则从附加列表中填充列表,反之亦然

将您的
子列表声明为public并填充一次。因此,您需要稍微修改一下您的
onResume
功能。检查列表是否已填充。如果不是,则从附加列表中填充列表,反之亦然

ListsubList=newarraylist();
每次调用onResume()时都会创建您的列表,这就是无法管理删除条目的原因。因此,要么复制此列表,要么每次检查哪些元素被删除,然后将数据设置为listview。

ListsubList=new ArrayList();
每次调用onResume()时都会创建您的列表,这就是无法管理删除条目的原因。所以,要么复制此列表,要么每次检查哪些元素被删除,然后将数据设置为listview。

您的意思是我应该使用布尔值检查列表是否已更新?:)谢谢!:)这有助于解决问题,你是说我应该使用布尔值检查列表是否已更新?:)谢谢!:)这很有帮助
mDelete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mParts.remove(part);
                    notifyDataSetChanged();

            }
        });