2010-06-30 174 views
0

因此,使用了我詢問的最後一個問題的建議,我想出瞭如何調用BarCodeScanner並將該值返回給字段。所以現在,我有一個吐司說「成功的掃描」,然後我想把結果傳遞給一個新的活動。當我註釋掉我的意圖時,一切正常(減去數據/屏幕切換的傳遞,顯然),但是當我按原樣運行我的項目時,它的FC ...沒有eclipse在代碼或XML中報告的錯誤。任何見解?在活動之間切換活動/傳遞數據

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"); 
     } 
    }  
    } 

} 

然後處理傳遞的數據,在新的活動:

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); 

回答

1

嘗試調用新的意圖時,發送Bundle對象。

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

嘗試以這種方式在子Activity中獲取字符串。

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");