如何保存活动的状态? [复制]

Posted

技术标签:

【中文标题】如何保存活动的状态? [复制]【英文标题】:How to save an activity's state? [duplicate] 【发布时间】:2014-08-05 02:21:08 【问题描述】:

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

我希望问题很清楚,如果没有,请询​​问,我会添加任何需要的内容。

提前致谢:)

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 数据库。更多详情请阅读Storage Options。 谢谢,我之前也在阅读它,只是想知道是否存在任何其他选项,因为我试图避免使用该特定应用程序的数据库。 【参考方案1】:

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

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

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

【讨论】:

以上是关于如何保存活动的状态? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

垃圾收集后如何保存应用程序状态? [复制]

Excel SaveAs 更改活动工作簿 - 如何另存为并保持活动工作簿处于活动状态? [复制]

如何保存我的活动状态

如何保存android活动的状态

Android - 在不同活动之间切换时保存当前的 onCreate 状态

Android活动导航保存状态