2013-03-15 5 views
1

Lorsque je change d'intention, je perds les données de l'onActivityResult précédent Je dois garder les deux nombres qu'il reçoit de l'utilisateur, actuellement il gardera un numéro, puis le suivant perd le précédent, voici le code:lors de la commutation des intentions Je perds des données

package com.eric.theworks; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 

public class MainActivity extends Activity implements OnClickListener { 

Button width, height, calc; 
TextView area; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    width = (Button) findViewById(R.id.button1); 
    height = (Button) findViewById(R.id.button2); 
    calc = (Button) findViewById(R.id.button3); 
    area = (TextView) findViewById(R.id.textView1); 

    width.setOnClickListener(this); 
    height.setOnClickListener(this); 
    calc.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    Intent i = new Intent(this, Numbers.class); 
    switch (v.getId()) { 

    case R.id.button1: 
     // width 
     i.putExtra("numbers", "width"); 
     startActivityForResult(i, 1); 

     break; 

    case R.id.button2: 
     // height 
     i.putExtra("numbers", "height"); 
     startActivityForResult(i, 1); 

     break; 

    case R.id.button3: 
     // calc 

     break; 

    } 


    } 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    if (data.getExtras().containsKey("widthInfo")){ 
     width.setText(data.getStringExtra("widthInfo")); 

} 
    if (data.getExtras().containsKey("heightInfo")){ 
     height.setText(data.getStringExtra("heightInfo")); 

} 

} 

} 





package com.eric.theworks; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 

public class Numbers extends Activity implements OnClickListener { 
EditText number; 
Button sendInfo; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.numbers); 
    number = (EditText) findViewById(R.id.editText1); 
    sendInfo = (Button) findViewById(R.id.button1); 
    sendInfo.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    String s = number.getText().toString(); 
    Intent i = getIntent(); 
    String msg = i.getStringExtra("numbers"); 
    if (msg.contentEquals("width")) { 
     i.putExtra("widthInfo", s); 
     setResult(RESULT_OK, i); 
     finish(); 

    } 
    if (msg.contentEquals("height")) { 
     i.putExtra("heightInfo", s); 
     setResult(RESULT_OK, i); 
     finish(); 

    } 

    } 

} 

Répondre

1

Vous pouvez utiliser la variable statique pour stocker les données précédentes.

Déclarez la chaîne statique globalement.

static String widthInfo=""; 
static String heightInfo=""; 

Donnez également un autre code de demande.

case R.id.button1: 
     // width 
     i.putExtra("numbers", "width"); 
     startActivityForResult(i, 1); 

     break; 

    case R.id.button2: 
     // height 
     i.putExtra("numbers", "height"); 
     startActivityForResult(i, 2); 

Ensuite, utilisez-le dans votre onActivityResult.

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(requestCode, resultCode, data); 
     switch (requestCode) { 
     case (1): { 

     if (data.getExtras().containsKey("widthInfo")){ 
      widthInfo=data.getStringExtra("widthInfo") 
      width.setText(data.getStringExtra("widthInfo")); 

    } else { 
    height.setText(heightInfo); 
    width.setText(widthInfo); 
    } 
     } 
    break; 
     case (2): 
     { 
     if (data.getExtras().containsKey("heightInfo")){ 
      heightInfo=data.getStringExtra("heightInfo") 
      height.setText(data.getStringExtra("heightInfo")); 

    }else { 
    height.setText(heightInfo); 
    width.setText(widthInfo); 
    } 

    } 
    break; 
    } 
} 
+1

Cette méthode fonctionne, mais pour une raison quelconque, il se débarrasse du texte sur le bouton 2 et rend le champ vide (cela peut encore être utilisé), pour le moment ils disent simplement "bouton", mais cela changera finalement. –

+0

vous pouvez faire une chose. Mettez le resultCode différent 1 pour la largeur et 2 pour la hauteur disons alors dans activityResult séparé ci-dessus le code selon resultCode. switch (ResultCode) {cas 1: {// code de rupture de largeur;} cas 2: {// code de hauteur. pause}} – KDeogharkar

+0

essayer .. – KDeogharkar

0

vous pouvez utiliser Bundle pour transmettre des données d'une activité à une autre plutôt que l'intention directement. par exemple:

Bundle b = new Bundle(); 
     b.putString("SingleClick",a); 
     b.putString("LongClick", "no"); 
     i.putExtras(b); 

et pour obtenir les données dans une autre utilisation de l'activité

Bundle bundle = getIntent().getExtras(); 
     String admin = bundle.getString("LongClick"); 
0
String s = number.getText().toString(); 
Intent i = getIntent(); 
String msg = i.getStringExtra("numbers"); 
if (msg.contentEquals("width")) { 
    i.putExtra("widthInfo", s); 
    setResult(RESULT_OK, i); 
    finish(); 

} 

assurez-vous que la chaîne s a des valeurs ....

+0

Que voulez-vous dire? Il obtient le texte du champ d'édition dans .Numbers. Cela fonctionne et renvoie la chaîne mais le problème est quand je change heightInfo la largeurInfo revient simplement à dire "bouton", où je dois garder les deux chaînes. –

Questions connexes