2010-07-07 116 views
1

所以,我一直在努力處理同樣愚蠢的事情。這裏的一些人幫助我得到它這是一點,但現在我已經得到了更遠的前進......但首先,我的代碼:找不到源代碼?

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; 
    @Override 
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(); 

     Button myTotalButton = (Button) findViewById(R.id.myTotalButton); 
     myTotalButton.setOnClickListener(new Button.OnClickListener() { 
      public void onClick(View view) { 
       Intent pass = new Intent(view.getContext(), Result.class); 
        startActivityForResult(pass, 0); 
       } 
      }); 



     } else if (resultCode == RESULT_CANCELED) { 

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

    } 




    } 
} 

所以無論如何,我想會發生什麼掃描成功後,結果將加載到EditText總計框中。然後單擊「myTotalButton」並將結果傳遞給下一個活動「Result.class」。現在我只是想讓它切換到新的活動。如果
Button myTotalButton = (Button) findViewById(R.id.myTotalButton); myTotalButton.setOnClickListener(new Button.OnClickListener() { public void onClick(View view) { Intent pass = new Intent(view.getContext(), Result.class); startActivityForResult(pass, 0);

代碼在那裏,FCs。否則,其餘的工作正常。任何建議/協助將會有所幫助。我覺得我失去了一些愚蠢的東西,我會爲自己而sma for。

+0

Logcat顯示FC背後的原因是什麼? – kiswa 2010-07-07 17:23:54

+0

07-07 14:25:44.146:INFO/ActivityManager(1083):Starting activity:Intent {cmp = com.mhe.test.scan/.Result} 07-07 14:25:45.193:DEBUG/dalvikvm(1083 ):GC_EXPLICIT在137ms中釋放了789個對象/38656字節 07-07 14:25:45.224:ERROR/Tethering(1083):主動iface(usb0)報告爲已添加,忽略 07-07 14:25:48.740:WARN/WindowManager(1083):沒有窗口調度指針動作0 07-07 14:25:49.271:WARN/WindowManager(1083):沒有窗口調度指針動作1 07-07 14:25:53.154:INFO/ActivityManager( 1083):啓動proc 多數民衆贊成在詳細logcat – sgardeski 2010-07-07 18:34:49

+0

和這看起來像錯誤的地方...雖然我真的不知道如何處理這個 07-07 14:24:45.224:錯誤/ AndroidRuntime(2857):引起:java.lang.reflect.InvocationTargetException 它也提到了一個類未找到錯誤。 – sgardeski 2010-07-07 18:38:28

回答

0

我想我剛剛意識到問題所在。

按鈕按下的活動回調到它調用的方法onActivityResult,並使用相同的requestCode爲0.這會導致出現錯誤,您嘗試getStringExtra("SCAN_RESULT"),因爲它只存在於掃描的回調中。

代替startActivityForResult(pass, 0);使用startActivityForResult(pass, 1);(或其他數字),並通過添加

} else if (1 == requestCode) { 
    \* your stuff to handle the button result here*\ 
} 

代碼段現有requestCode處理它if語句(或使其成爲一個開關()語句)。

最終的結果會是這個樣子:

@Override 
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); 
      } 

      Toast toast = Toast.makeText(getApplicationContext(), 
       "Successful Scan", Toast.LENGTH_SHORT).show(); 

      Button myTotalButton = (Button) findViewById(R.id.myTotalButton); 
      myTotalButton.setOnClickListener(new Button.OnClickListener() { 
       public void onClick(View view) { 
        Intent pass = new Intent(view.getContext(), Result.class); 
        startActivityForResult(pass, 1); 
        } 
       }); 
     } else if (resultCode == RESULT_CANCELED) { 
      if (totalbox != null) { 
       totalbox.setText("bummer"); 
      } 
     } 
    } else if (requestCode == 1) { 
     if (resultCode == RESULT_OK) { 
      // Do whatever it is you want to do with the returned 
      // data from the Result.class activity call 
     } 
    } 
} 
+0

我的新手自我仍然試圖實現這一點,但它看起來像正確的行爲。任何進一步的援助將不勝感激,但我正在接受這個答案。 – sgardeski 2010-07-07 19:52:27

+0

很高興能幫到你!我更新了答案以包含更全面的代碼示例(我也進行了一些清理)。 – kiswa 2010-07-07 20:32:04

1

您是否已將新活動添加到您的Manifest? 另外,你是否包含了zxing項目的intent集成器代碼?

+0

是的,我實際上是通過意圖調用條碼掃描器應用程序。掃描成功 – sgardeski 2010-07-07 19:05:48

0

所以,我在想,你只是想在結果傳遞到另一個活動的正確嗎?如果是這樣,有一個簡單的Java方法來做到這一點,這是非特定於Android的。如果是這樣,那麼讓我知道,我會幫助。

+0

是的,這就是它,我希望它發生在我點擊myTotalButton時 – sgardeski 2010-07-07 20:15:20