繁体   English   中英

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

[英]Pass ArrayList objects to another acivity by reference

我有一个活动将对象数组列表发送到另一个活动。

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,以便我可以添加,删除或修改它而不丢失更改。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM