如何使用ZXING扫描结果
我对此感到失望。我在android开发中有点新鲜感。如何使用ZXING扫描结果
我想使用ZXING的扫描结果。我将ZXING整合到我的android应用程序中,扫描工作正常。现在我想使用扫描结果来更新主活动中的TextView。
我该怎么做?
我的代码是做现在以下:
- 打开一个按钮主要活动。
- 点击按钮激活扫描仪。
- 扫描完成后,返回到主要活动。
- TextView是空的,由于某种原因,它从横向移动到纵向后会回到原始内容。
(2)我想使用扫描结果更新主活动(我的代码中的电视)中的TextView。
请大家帮忙, 谢谢。
我的代码:
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 pressToScan = (Button) findViewById(R.id.button1);
pressToScan.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent data = new Intent("com.google.zxing.client.android.SCAN");
data.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(data, 0);
TextView tv = (TextView) findViewById(R.id.scanResult);
tv.setText(data.getStringExtra("SCAN_RESULT"));
}
});
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
String contents = null;
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
contents = data.getStringExtra("SCAN_RESULT");
String format = data.getStringExtra("SCAN_RESULT_FORMAT");
// Handle successful scan
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
}
}
移动以下块
TextView tv = (TextView) findViewById(R.id.scanResult);
tv.setText(data.getStringExtra("SCAN_RESULT"));
到
public void onActivityResult(int requestCode, int resultCode, Intent data) {
String contents = null;
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
contents = data.getStringExtra("SCAN_RESULT");
String format = data.getStringExtra("SCAN_RESULT_FORMAT");
//moved here
TextView tv = (TextView) findViewById(R.id.scanResult);
tv.setText(contents);
// Handle successful scan
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
}
[编辑]
在活动
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
}
在清单的变化添加这主要活动添加机器人:configChanges = “方向”
<activity android:name="..."
android:label="@string/appName"
android:configChanges="orientation"
startActivityForResult()
当
所谓的活动设置它的数据,它在你的活动中调用onActivityResult()
,startActivityForResult()
不会暂停执行方法,所以正确的方式写这个
public void onActivityResult(int requestCode, int resultCode, Intent data) {
String contents = null;
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
contents = data.getStringExtra("SCAN_RESULT");
String format = data.getStringExtra("SCAN_RESULT_FORMAT");
tv.setText(contents);
// Handle successful scan
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
}
}
请注意,当您切换方向时,会调用'onCreate()',因此您需要存储上次读取的数据并将其检索到'onCreate()' – user1304907 2012-03-31 10:54:56
我该怎么做? – Ohadza 2012-03-31 10:59:07
@Ohadza发送内容到其他活动使用'putExtras()'的意图,调用其他活动,采取的键,值对,在这里检查http://developer.android.com/reference/android/content/Intent。 html#putExtra%28java.lang.String,%20java.lang.CharSequence%29 – user1304907 2012-03-31 13:00:43
将扫描的信息存储在本地并检索您想要的位置。 – RAAAAM 2012-03-31 10:39:08
你能为我解释怎么做吗?谢谢! – Ohadza 2012-03-31 11:03:10