Android 序列化后使用onBackPressed()发回列表
如何在活动B中的onBackPressed()操作后更新列表值,并将此更改保存在活动A的列表中 活动A:Android 序列化后使用onBackPressed()发回列表,android,android-intent,arraylist,bundle,serializable,Android,Android Intent,Arraylist,Bundle,Serializable,如何在活动B中的onBackPressed()操作后更新列表值,并将此更改保存在活动A的列表中 活动A: Intent order = new Intent(getApplicationContext(), OrderActivity.class); Bundle args = new Bundle(); args.putSerializable("order", (Serializable) orderPositi
Intent order = new Intent(getApplicationContext(), OrderActivity.class);
Bundle args = new Bundle();
args.putSerializable("order", (Serializable) orderPositions);
order.putExtra("order", args);
startActivity(order);
活动B:
@Override
public void onBackPressed()
{
new AlertDialog.Builder(this)
.setCancelable(false)
.setMessage("Are you sure you want to cancel?")
.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
menuActivity.setOrderPositions(orderPositions);
finish();
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
})
.setNegativeButton("No", null)
.show();
}
我在活动A中也有列表设置器(menuActivity.setOrderPositions(orderPositions);),但在此之后,我有空列表。
任何解决方案?在调用
finish()
之前,您需要在第一个活动中startActivityForResult
,在第二个活动中setResult(activity.RESULT\u OK,)
。在第一个活动中,在ActivityResult方法中获取数据
但我建议使用一些存储(例如,数据库)来存储您的数据,并接受来自任何活动的数据
或者您可以创建一些单例并将列表存储在实例中。在调用
finish()
之前,您需要在第一个活动中startActivityForResult
,在第二个活动中setResult(activity.RESULT\u OK,)
。在第一个活动中,在ActivityResult方法中获取数据
但我建议使用一些存储(例如,数据库)来存储您的数据,并接受来自任何活动的数据
或者您可以创建一些单例并将列表存储在实例中。调用
“适配器。notifyDataSetChanged();”
关于活动A的onResume()方法
注意:adapter是我们为listview定义的Adpeter类。它将刷新列表视图。我在我的案例中使用了它,它对我起了作用
“适配器。notifyDataSetChanged();”
关于活动A的onResume()方法
注意:adapter是我们为listview定义的Adpeter类。它将刷新列表视图。我在我的案例中使用了它,它对我起到了作用我制作了一种方法,可以计算重复的位置并删除重复的位置
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
public void checkForDuplicates(ArrayList<OrderSchema> orderPositions)
{
for(int i = 0; i < orderPositions.size(); i++)
{
for (int j = i+1; j < orderPositions.size(); j++)
{
if (Objects.equals(orderPositions.get(i).getPositionID(), orderPositions.get(j).getPositionID()) && (i != j))
{
Integer count = orderPositions.get(i).getCount();
count += 1;
orderPositions.get(i).setCount(count);
orderPositions.remove(j);
j = j -1;
}
}
}
}
@RequiresApi(api=Build.VERSION\u CODES.KITKAT)
公共无效检查副本(ArrayList orderPositions)
{
对于(int i=0;i
我制作了一种方法,该方法包含重复位置的计数和删除重复位置
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
public void checkForDuplicates(ArrayList<OrderSchema> orderPositions)
{
for(int i = 0; i < orderPositions.size(); i++)
{
for (int j = i+1; j < orderPositions.size(); j++)
{
if (Objects.equals(orderPositions.get(i).getPositionID(), orderPositions.get(j).getPositionID()) && (i != j))
{
Integer count = orderPositions.get(i).getCount();
count += 1;
orderPositions.get(i).setCount(count);
orderPositions.remove(j);
j = j -1;
}
}
}
}
@RequiresApi(api=Build.VERSION\u CODES.KITKAT)
公共无效检查副本(ArrayList orderPositions)
{
对于(int i=0;i