如问题中所述,我想知道如何保存活动的状态。我的应用程序有一个产品列表,允许用户单击产品,启动第二个活动,显示有关该产品的所有信息。在第二个活动中,用户可以通过按下按钮“将产品添加到购物车”。 按下按钮时,第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);
答案 0 :(得分:2)
您需要将购物车数据存储到某个地方的持久存储中。请查看其他人提到的storage option文档。
基本上,您需要将购物车项目保存到文件系统(sqlite db,text file,shared prefs)。当您的活动退出onStop()
或onDestroy()
,然后在您的活动onCreate()
或onResume()
中检索已保存的购物车项目或您用于填充购物车的任何方法时,都会执行此操作
另一种方法是使用intent个附加功能,使用intent.putExtra(name, value)
在活动之间传递商品数据。只要您的活动没有被杀死,这种方法就可以正常工作,在这种情况下数据将会丢失。因此,保存到持久存储更安全。