2010-07-07 119 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