从另一个活动返回时,ArrayList为null

时间:2013-12-29 01:52:49

标签: java android arrays list nullpointerexception

我有一个将要发送到另一个活动的项目的ArrayList。 ArrayList的目的是保存购物车之类的项目,删除活动显示用户购物车中的项目并允许他们删除项目。除了从delete活动返回外,ArrayList为空。

onCreate的代码:

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

    // instantiating layout features
    priceEditText = (EditText) findViewById(R.id.priceEditText);
    addItem = (Button) findViewById(R.id.addItemButton);
    gps = (CheckBox) findViewById(R.id.locationCheckBox);
    tax = (EditText) findViewById(R.id.taxEditText);
    subTotal = (EditText) findViewById(R.id.subTotalTextEdit);
    total = (Button) findViewById(R.id.totalitemsButton);
    totalTextEdit = (EditText) findViewById(R.id.totalTextEdit);
    context = this;
    sTotal = 0.0;
    name = (EditText) findViewById(R.id.itemNameTextField);
    delete = (Button) findViewById(R.id.deleteItemButton);
    items = new ArrayList<Item>();

    // adding listeners
    addItem.setOnClickListener(click);
    total.setOnClickListener(done);
    delete.setOnClickListener(remove);
}

开始新活动的代码:

private OnClickListener remove = new OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent(
                com.JPT3Productions.salestaxcalc.MainActivity.this,
                Delete.class);
        Bundle bundle = new Bundle();
        bundle.putSerializable("array", items);
        intent.putExtras(bundle);
        startActivity(intent);
    }
};

最后,收到意图:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_delete);

    // Show the Up button in the action bar.
    setupActionBar();
    Intent intent = getIntent();
    Bundle bundle = intent.getExtras();
    ArrayList<Item> items = (ArrayList<Item>) bundle.getSerializable("array");
    final TableLayout layout = (TableLayout) findViewById(R.id.tl);

1 个答案:

答案 0 :(得分:0)

显示删除活动时,您的活动可能会被销毁并重新创建。

您应该实施生命周期事件以保存实例数据,例如购物车,因此如果您的活动被重新创建,它将被保留。

检查Saving and Restoring Activity State上的文档,了解有关如何执行此操作的信息。