3

我需要一些指导

问题:

我想使用 CartActivity 中的 EditText 更新 ProductInformationActivity 中项目的数量

我的程序概述:

我在 ProductInformationActivity 中使用 Constant 类来存储 Item 的信息,例如:Title、Qty、Cost、Total,然后在 CartActivity 中显示这些详细信息。

查看这些屏幕截图:

  1. ProductInformationActivity :我第一次接受用户数量的地方。

  2. CartActivity :我想允许用户更新他在 ProductInformationActivity 中输入的项目的数量 [这里我使用 EditText 接受新数量]

产品信息活动.java:

每当用户单击“添加订单”按钮时,我都会将项目标题、数量、成本和总计存储在常量类中,然后在 CartActivity 中显示这些值

4

3 回答 3

0

您有一个包含项目的列表

Constants.sItem_Detail

它是静态的和公共的,因此可以从任何地方的所有类访问。

当您在 CartActivity 中时,ProductInformationActivity 将被暂停、停止或销毁。它没有显示,所以你不能更新它的视图元素,或者至少你不应该这样做。

在 CartActivity 中你有 TextWatcher,在 onTextChanged 方法中将 Constants.sItem_Detail 中的值更新为新值,在 ProductInformationActivity 中你得到它并在 onResume 方法中的 EditText 中设置它。

        HashMap<String, String> item = new HashMap<String, String>();
        item = Constants.sItem_Detail.get(position);

        // Setting all values in listview

        title.setText(item.get(com.era.restaurant.versionoct.menu.ProductInformationActivity.KEY_TITLE));
        qty.setText(item.get(com.era.restaurant.versionoct.menu.ProductInformationActivity.KEY_QTY));
        cost.setText(item.get(com.era.restaurant.versionoct.menu.ProductInformationActivity.KEY_COST));
        total.setText(item.get(com.era.restaurant.versionoct.menu.ProductInformationActivity.KEY_TOTAL));                        

        qty.addTextChangedListener(new TextWatcher() {

                public void onTextChanged(CharSequence s, int start, int before,
                                int count) {

                        if (!qty.getText().toString().equals("")
                                        || !qty.getText().toString().equals("")) {

                                // accept quantity by user
                                itemquantity = Integer.parseInt(qty.getText()
                                                .toString());                      
//here You update value, You have item variable with current item
item.put(KEY_QTY, itemquantity);
//all object are always passed by reference so that is enough to update it

                        }      
                }

在 onResume

@Override
public void onResume()
{
     super.onResume();
     //get item to display
     HashMap<String, String> item = new HashMap<String, String>();
     item = Constants.sItem_Detail.get(id); //i don't know how You identify items, but here You need to get correct item from list.
     edit_qty_code.setText(item.get(KEY_QTY));
}
于 2013-05-07T06:01:28.777 回答
0

好的,首先在 CartAdapter.java 中将您的 qty EditText 修改为静态,如下所示,

所以,修改这一行

最终 EditText 数量 = (EditText) vi.findViewById(R.id.qty);

如下,

静态 EditText 数量 = (EditText) vi.findViewById(R.id.qty);

现在在 CartAdapter.java 中创建一个公共方法,如下所示,

public static String getQuantity()
{
     if ( qty != null )
     {
          return qty.getText().toString();
     }
     return "";
}

现在在 ProductInformationActivity.java

在 onResume() 方法中,编写以下行(如果不存在则创建一个方法),

@Override
public void onResume()
{
     super.onResume();
     edit_qty_code.setText ( CartAdapter.getQuantity() ); // This line will get the modified EditText's value from CartAdapter.java class file.
}
于 2013-05-07T05:32:59.043 回答
-1
  1. 创建一个新的意图。
  2. 将新数据设置为意图的额外内容。
  3. 使用新的 Intent 启动 CartActivity。
  4. 在 CartActivity 的 onCreate 中,从 Intent 中获取数据并更新 UI。
于 2013-05-07T05:19:46.087 回答