2010-06-30 3 views
0

En utilisant les suggestions de la dernière question que j'ai posée, j'ai trouvé comment appeler BarCodeScanner et renvoyer la valeur à un champ. alors maintenant, j'ai un toast qui dit "scan réussi" et ensuite je veux passer le résultat à une nouvelle activité. quand je commente mon intention, tout fonctionne (moins le passage de données/commutation d'écran, évidemment) mais quand je cours mon projet tel quel, c'est FC ... aucune erreur signalée par eclipse dans le code ou le XML. Des idées?Commutation d'activités/transmission de données entre activités

package com.mhe.test.scan; 

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


public class main extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
    Button myScanButton = (Button) findViewById(R.id.myScanButton); 
    totalbox = (EditText) findViewById(R.id.tBox);   

    myScanButton.setOnClickListener(new Button.OnClickListener() { 
     public void onClick(View v) { 
     Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
     intent.putExtra("SCAN_MODE", "PRODUCT_MODE"); 
     startActivityForResult(intent, 0); 
     } 
    }); 
    } 
    private EditText totalbox; 
    public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    if (requestCode == 0) { 
     if (resultCode == RESULT_OK) { 
     final String contents = intent.getStringExtra("SCAN_RESULT"); 

     if (totalbox != null) 
     totalbox.setText(contents); 


     Context context = getApplicationContext(); 
     CharSequence text = "Successful Scan"; 
     int duration = Toast.LENGTH_SHORT; 
     Toast toast = Toast.makeText(context, text, duration); 
     toast.show(); 


    Intent i = new Intent(main.this, Result.class); 
     i.putExtra("SNARP", "SCAN_RESULT"); 
     startActivityForResult(i, 0); 

     } else if (resultCode == RESULT_CANCELED) { 

     if (totalbox != null) 
      totalbox.setText("bummer"); 
     } 
    }  
    } 

} 

Et pour gérer les données passées, dans la nouvelle activité:

package com.mhe.test.scan; 

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

public class Result extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.result); 

    Intent i = getIntent(); 
    Bundle b = i.getExtras(); 
    String foosh = b.getString("SNARP"); 

    EditText box1 = (EditText) findViewById(R.id.tBox1);  
     box1.setText(foosh); 

Répondre

1

Essayez d'envoyer un objet Bundle lors de l'appel de la nouvelle intention.

Intent i = new Intent(main.this, Result.class); 
Bundle b = new Bundle(); 
b.putString("SNARP", "SCAN_RESULT") 
i.putExtras(b); 
0

Essayez d'obtenir une chaîne dans l'activité enfant de cette façon.

public class Result extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.result); 

    Intent i = getIntent(); 
    String foosh = i.getStringExtra("SNARP"); 
Questions connexes