如何保存活动的状态?

时间:2014-06-14 19:49:51

标签: android android-activity savestate

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

我希望这个问题很清楚,如果没有,请询​​问,我会补充所需的一切。

提前致谢:)

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);

1 个答案:

答案 0 :(得分:2)

您需要将购物车数据存储到某个地方的持久存储中。请查看其他人提到的storage option文档。

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

另一种方法是使用intent个附加功能,使用intent.putExtra(name, value)在活动之间传递商品数据。只要您的活动没有被杀死,这种方法就可以正常工作,在这种情况下数据将会丢失。因此,保存到持久存储更安全。