2013-05-07 2 views
3

je besoin de quelques conseilsComment mettre à jour EditText valeur dans une autre activité tout en utilisant constante de classe pour stocker des données

Question:

Je veux mettre à jour la quantité d'un élément dans ProductInformationActivity en utilisant EditText dans CartActivity

Vue d'ensemble de mon programme:

J'utilise la classe Constant dans ProductInformationActivity à Stor L'information pour un article comme: Titre, Quantité, Coût, Total, puis en affichant ces détails dans CartActivity.

Voir ces captures d'écran:

  1. ProductInformationActivity: où j'accepte la quantité par l'utilisateur première fois.

  2. CartActivity: où je veux permettre à l'utilisateur de mettre à jour la quantité d'un élément, qu'il est entré dans ProductInformationActivity [J'utilise ici EditText d'accepter une nouvelle quantité]

ProductInformationActivity.java:

Chaque fois que l'utilisateur clique sur le bouton Ajouter de la commande, je stocke titre d'article, Nombre, coût et total en classe constante et montrant ces valeurs dans CartActivity

+0

1er - pourquoi ne pas utiliser la base de données? 2ème - Voulez-vous remplacer la nouvelle valeur par ancienne? c'est comme ça que ça sonne. Un peu déroutant. – Gustek

+0

oui je veux remplacer la nouvelle valeur avec l'ancienne valeur, mais j'accepte la nouvelle valeur dans CartActivity et l'ancienne valeur j'ai pris en ProductInformationActivity, et il n'y a aucun besoin d'utiliser la base de données, c'est pourquoi je n'ai pas utilisé ce @Gustek –

+0

pour remplacer ** 3 ** avec ** 9 **, ai-je raison, Pandey Ji? – Lucifer

Répondre

-1
  1. Créer une nouvelle intention.
  2. Définissez les nouvelles données comme un extra sur l'intention.
  3. Démarrez CartActivity avec la nouvelle intention.
  4. Dans la commande onCreate de CartActivity, récupérez les données de l'intention et mettez à jour l'interface utilisateur.
0

Ok d'abord Modifier votre qté EditText à l'électricité statique dans CartAdapter.java comme suit,

Ainsi, modifier cette ligne

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

comme ci-dessous,

EditText statique qté = (EditText) vi.findViewById (R.id.qty);

Créez maintenant une méthode publique dans CartAdapter.java comme ci-dessous,

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

maintenant à ProductInformationActivity.java

Dans la méthode onResume(), écrire la ligne suivante (créer une méthode si elle est pas là),

@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. 
} 
0

Vous avez une liste avec des articles

Constants.sItem_Detail 

Il est statique et publique donc il est accessible de toutes les classes partout.

Lorsque vous êtes dans CartActivity, ProductInformationActivity sera mis en pause, arrêté ou détruit. Il n'est pas affiché donc vous ne pouvez pas mettre à jour ses éléments de vue ou au moins Vous ne devriez pas le faire.

Dans CartActivity Vous avez TextWatcher, dans la valeur de mise à jour de la méthode onTextChanged dans Constants.sItem_Detail à une nouvelle valeur et dans ProductInformationActivity Vous l'obtenez et le définissez dans EditText dans la méthode onResume.

 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 

         }  
       } 

dans 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)); 
} 
+0

oui, montrez-moi du code comment puis-je faire cela par programme , tu as bien compris ce que je voulais –

+0

Voir mis à jour. Je ne sais pas comment Vous décidez quel élément à afficher dans ProductInformationActivity mais j'espère que vous comprenez une idée comment cela fonctionne. – Gustek

Questions connexes