我已将Zxing 3.0.1作为库添加到我的项目中我有2个布局:首先我有一个调用Zxing库的 CaptureActivity 的按钮,当 CaptureActivit 时y解码条形码我需要将此代码放在 textView 的第二个布局上。我怎样才能做到这一点?如果有人知道,请写一步一步的手册,因为在和Android初学者一样,并且不知道要编码什么。
我必须把这部分代码 CaptureActivity ?
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (resultCode == RESULT_OK) {
if (requestCode == HISTORY_REQUEST_CODE) {
int itemNumber = intent.getIntExtra(Intents.History.ITEM_NUMBER, -1);
if (itemNumber >= 0) {
HistoryItem historyItem = historyManager.buildHistoryItem(itemNumber);
decodeOrStoreSavedBitmap(null, historyItem.getResult());
}
}
}
}
答案 0 :(得分:1)
Yout必须使用 startActivityForResult 启动CaptureActivity:
startActivityForResult(new Intent(this, CaptureActivity.class), CaptureActivity.REQUEST_CODE);
当Zxing完成解码时(在我的情况下它返回 handleResult(Result rawResult)回调的结果 - 你应该在CaptureActivity里面调用 setResult(RESULT_OK,data) data - 是您解码的捆绑字符串,并调用完成():
@Override
public void handleResult(Result rawResult) {
Bundle data = new Bundle();
args.putString(RESULT_KEY, rawResult.getText());
setResult(RESULT_OK, data);
finish();
}
在启动CaptureActivity的Activity中,您必须覆盖 onActivityResult(int requestCode,int resultCode,Intent data)回调并处理获取结果 - 在您的情况下 - 更新TextView:
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == CaptureActivity.REQUEST_CODE && resultCode == RESULT_OK) {
youtTextView.post(new Runnable() {
@Override
public void run() {
yourTextView.setText(intent.getStringExtra(RESULT_KEY));
}
};
}
}