Android 序列化后使用onBackPressed()发回列表

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

如何在活动B中的onBackPressed()操作后更新列表值,并将此更改保存在活动A的列表中

活动A:

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