无法找到来源?

时间:2010-07-07 17:18:59

标签: android

所以,我一直在研究同样愚蠢的事情。这里的一些人帮助我达到了目的,但现在我必须向前移动......但首先,我的代码:

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 totalbox中。然后单击'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);

代码在那里,它是FC。否则,其余的工作正常。任何建议/协助都会有所帮助。我觉得我错过了一些愚蠢的事情,我会为自己而烦恼。

3 个答案:

答案 0 :(得分:1)

您是否已将新活动添加到您的清单中? 另外,您是否包含了zxing项目中的intent integrator代码?

答案 1 :(得分: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*\ } (或任何数字)并通过添加

来处理它
@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
        }
    }
}

现有requestCode if语句的代码段(或使其成为switch()语句)。

最终结果如下所示:

{{1}}

答案 2 :(得分:0)

那么,我是否认为您只想将结果传递给另一个活动?如果是这样,有一种简单的Java方法可以实现非特定于Android的方式。如果是的话,请告诉我,我会帮忙的。