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();
}
});