通过引用将ArrayList对象传递给另一个acivity

时间:2016-01-19 23:05:19

标签: java android android-intent arraylist

我有一个活动将对象arraylist发送到另一个活动。

public class MainActivity extends AppCompatActivity implements ListView.OnItemClickListener {

    private ArrayList<Value> values;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ...

        values = new ArrayList<>();
    }


    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Intent i;
        switch(position){
            case 0:
                i = new Intent(MainActivity.this, Main2Activity.class);
                i.putExtra("Values", values);
                startActivity(i);
                break;
            case 1:
                i = new Intent(MainActivity.this, Main3Activity.class);
                i.putExtra("Values",values);
                startActivity(i);
                break;
        }
    }
}

当我在任何其他活动中添加或删除值时,ArrayList在我的MainActivity中不会发生变化。例如:

public class Main2Activity extends AppCompatActivity{

    private ArrayList<Value> values;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        ...

        values = (ArrayList<Value>) getIntent().getSerializableExtra("Values");

        ...

        values.add(value1, value2);
        this.finish();
    }

    ...
}

我想知道如何通过引用发送我的ArrayList,这样我就可以添加,删除或修改它而不会丢失更改。

1 个答案:

答案 0 :(得分:3)

您在Intent中传递的额外数据是序列化的,因此无法通过引用传递。

一个简单的解决方案是在某处使用static字段来共享Activity之间的数据

相关问题