关于android:如何保存活动的状态?

How to save an activity's state?

本问题已经有最佳答案,请猛点这里访问。

如问题中所述,我想知道如何保存活动的状态。我的应用程序有一个产品列表,允许用户单击一个产品,开始第二个显示该产品所有信息的活动。在第二个活动中,用户可以通过按按钮"将产品添加到购物车"。当您按下按钮时,第三个活动开始。它是一个列表视图,显示添加的产品的名称和价格-如下面的代码所示。如何保存添加的数据,以便返回并添加另一个产品时,它会将其添加到已存在产品的下面的ListView中?

我希望问题是清楚的,如果不是,请问,我会补充任何需要。

事先谢谢:)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package activity_app;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class shopping_cart extends ListActivity {

 private ListView lv;
 private Intent intent;
 private String name;
 private String price;
 ArrayList<HashMap<String, String>> oslist;
 private static final String PROD_PRICE ="price";
 private static final String PROD_NAME ="name";
 ListAdapter adapter;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.shopping_cart_activity);
  getActionBar().setTitle("Ordered Products");
  intent = getIntent();
  name = intent.getStringExtra("PROD_NAME");
  price = intent.getStringExtra("PROD_PRICE");
  oslist = new ArrayList<HashMap<String, String>>();

  HashMap<String, String> map = new HashMap<String, String>();
  map.put(PROD_NAME, name);
  map.put(PROD_PRICE, price);
  oslist.add(map);

   adapter = new SimpleAdapter(shopping_cart.this, oslist,
            R.layout.shoppingcart,
            new String[] {PROD_NAME, PROD_PRICE}, new int[] {R.id.name, R.id.Price});
    setListAdapter(adapter);


您需要将购物车数据存储到某个持久存储区。查看其他人提到的存储选项文档。

基本上,您需要将购物车项目保存到某个文件系统(sqlite db、文本文件、共享prefs)。当您的活动退出onStop()onDestroy()时,您将执行此操作,然后在您的活动onCreate()onResume()中检索保存的购物车项目,或者使用任何方法填充购物车。

另一种方法是通过使用intent.putExtra(name, value)在活动之间使用意图附加来传递项目数据。只要你的活动不被杀死,这就可以正常工作,在这种情况下,数据会丢失。因此,保存到持久存储更安全。