所以,我一直在研究同样愚蠢的事情。这里的一些人帮助我达到了目的,但现在我必须向前移动......但首先,我的代码:
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。否则,其余的工作正常。任何建议/协助都会有所帮助。我觉得我错过了一些愚蠢的事情,我会为自己而烦恼。
答案 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的方式。如果是的话,请告诉我,我会帮忙的。