如何在使用常量类来存储数据时更新另一个活动中的EditText值

时间:2013-05-07 04:50:46

标签: android

我需要一些指导

问题:

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

我的计划概述:

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

查看以下截图:

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

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

  3. ProductInformationActivity.java:

    每当用户点击Add Order按钮时,我会在Constant Class中存储Item Title,Qty,Cost和Total,然后在CartActivity中显示这些值

3 个答案:

答案 0 :(得分:0)

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

所以,修改这一行

  

final EditText qty =(EditText)vi.findViewById(R.id.qty);

如下,

  

static EditText qty =(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.
}

答案 1 :(得分:0)

您有一个包含项目的列表

Constants.sItem_Detail

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

当您处于CartActivity状态时,ProductInformationActivity将暂停,停止或销毁。它不会显示,因此您无法更新它的视图元素,或者至少不应该这样做。

在CartActivity中你有TextWatcher,在constants.sItem_Detail中的onTextChanged方法更新值到一个新值,在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));
}

答案 2 :(得分:-1)

  1. 创建新的意图。
  2. 将新数据设置为意图上的额外数据。
  3. 使用新的Intent启动CartActivity。
  4. 在CartActivity的onCreate中,从Intent获取数据并更新UI。