如何在Android中使用选项卡时跨活动存储信息

时间:2013-01-29 06:53:49

标签: android android-intent android-emulator

我制作了一个应用,其中我正在使用两个标签

第一个标签,以显示产品列表[菜单标签]

第二个标签,以显示您添加的产品[购物车标签]

我允许用户将产品添加到购物车更新产品数量并显示所有商品的总金额

在我的代码中,我面临的问题非常小,但过去两天我没有办法解决这个问题。

问题:

每当我点击购物车标签查看产品时,我选择购买然后再返回菜单标签选择更多产品再购买然后再点击购物车标签查看所有产品我选择了,在这里我可以查看所选产品但无法查看更新的数量,也无法获得总金额的任何变化[仅获取所有以前添加的项目的总数,而不是我第二次添加的那些...] < / em>的

请告诉我我缺少的地方,获取更新的数量并获取总价格的变化,我需要添加的代码以及我需要在 ViewCartActivity 类中添加的位置

ViewCartActivity.Java:

    public class ViewCartActivity extends Activity {

    TextView mTxtViewGrandTotal;
    String mGrandTotal ;


    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.viewcartactivity);

        ListView mLstView1 = (ListView) findViewById(R.id.listView1);
        mTxtViewGrandTotal = (TextView) findViewById(R.id.mTxtViewGrandTotalValue);

        ViewCartAdapter mViewCartAdpt = new ViewCartAdapter(ViewCartActivity.this);
        mLstView1.setAdapter(mViewCartAdpt);

        if (Constants.mItem_Detail.size() > 0) 
        {
            Double mGTotal = Double.parseDouble(Constants.mItem_Detail.get(0).get(SingleProductActivity.KEY_TOTAL));
            for (int i = 1; i < Constants.mItem_Detail.size(); i++) {   
                mGTotal = mGTotal + Double.parseDouble(Constants.mItem_Detail.get(i).get(SingleProductActivity.KEY_TOTAL));
            }

            mGrandTotal = String.valueOf(mGTotal);
            mTxtViewGrandTotal.setText(mGrandTotal);



            ImageButton mImgViewCart = (ImageButton) findViewById(R.id.back_btn);
            mImgViewCart.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    // TODO Auto-generated method stub

                        Intent mViewCartIntent = new Intent(ViewCartActivity.this, com.version.bajrang.january.menu.ArrowsActivity.class);
                        startActivity(mViewCartIntent);


                }
            });     
        }
    }   

    @Override
    protected void onResume() {
    // TODO Auto-generated method stub
    System.out.println("onResume list current size "+Constants.mItem_Detail.size());
    super.onResume();
    }
}

在Logcat中,我得到了:

onResume list current size 3 [Number of Records]

TabActivity.Java:

    private void setTabs()
{
    addTab("Order", R.drawable.tab_order, CategoryActivity.class);
    addTab("Cart", R.drawable.tab_cart, ViewCartActivity.class);
}

@Override
    public void onBackPressed() {
    // Code to update product Quantity
    super.onBackPressed();
    Constants.mItem_Detail.clear();
}

ViewCartAdapter.Java:

 public class ViewCartAdapter extends BaseAdapter {

Activity activity;
LayoutInflater inflater;

public ViewCartAdapter(Activity a) {
    // TODO Auto-generated constructor stub
    activity = a;
    inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
    // TODO Auto-generated method stub
    return Constants.mItem_Detail.size();
}
public Object getItem(int position) {
    //return position;
    return Constants.mItem_Detail.get(position);
}
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;

}
public View getView(final int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    View vi = convertView;
    if (convertView == null)
        vi = inflater.inflate(R.layout.viewcartlist, null);
    TextView title = (TextView) vi.findViewById(R.id.title);
    TextView qty = (TextView) vi.findViewById(R.id.qty);
    TextView cost = (TextView) vi.findViewById(R.id.cost);

    HashMap<String, String> item = new HashMap<String, String>();
    item = Constants.mItem_Detail.get(position);
    // Setting all values in listview
    title.setText(item.get(SingleProductActivity.TAG_NAME));
    qty.setText(item.get(SingleProductActivity.KEY_QTY));
    cost.setText(item.get(SingleProductActivity.TAG_DURATION));
    return vi;
}   
   }

1 个答案:

答案 0 :(得分:1)

Rakesh你已经编写了程序中所需的一切,只需要从onCreate()移动到ViewCartActivity中的onResume()方法

像这样:

 public class ViewCartActivity extends Activity 
 {

TextView mTxtViewGrandTotal;
String mGrandTotal ;


@Override
protected void onCreate(Bundle savedInstanceState) 
{
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.viewcartactivity);

    ListView mLstView1 = (ListView) findViewById(R.id.listView1);
    mTxtViewGrandTotal = (TextView) findViewById(R.id.mTxtViewGrandTotalValue);

    ViewCartAdapter mViewCartAdpt = new ViewCartAdapter(ViewCartActivity.this);
    mLstView1.setAdapter(mViewCartAdpt);

        ImageButton mImgViewCart = (ImageButton) findViewById(R.id.back_btn);
        mImgViewCart.setOnClickListener(new OnClickListener() 
        {

            public void onClick(View v) {
                // TODO Auto-generated method stub

                    Intent mViewCartIntent = new Intent(ViewCartActivity.this, com.version.bajrang.january.menu.ArrowsActivity.class);
                    startActivity(mViewCartIntent);

            }
        });     
    }


@Override
protected void onResume() 
{
    super.onResume();
    System.out.println("onResume list current size " + Constants.mItem_Detail.size());

    if (Constants.mItem_Detail.size() == 0) 
    {
    return;
    }

    Double mGTotal = Double.parseDouble(Constants.mItem_Detail.get(0).get(SingleProductActivity.KEY_TOTAL));
    for (int i = 1; i < Constants.mItem_Detail.size(); i++) 
    {   
        mGTotal = mGTotal + Double.parseDouble(Constants.mItem_Detail.get(i).get(SingleProductActivity.KEY_TOTAL));
    }
    mGrandTotal = String.valueOf(mGTotal);
    mTxtViewGrandTotal.setText(mGrandTotal);
     }
   }