【发布时间】:2014-06-19 07:40:27
【问题描述】:
我知道其他一些人遇到了这个问题,但我已经按照解决方案进行了操作,但它仍然对我不起作用。
我创建了一个新的应用程序,它有 1 个 Activity,有 1 个按钮(扫描按钮)和 2 个文本视图(它们将输出 Zxing 目前返回的格式名称和内容)。
我已按照 ScanningViaIntent 教程进行操作,但似乎没有达到onActivityResult
下面是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final IntentIntegrator integrator = new IntentIntegrator(this);
Button btnScan = (Button) findViewById(R.id.button1);
btnScan.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
integrator.initiateScan();
}
});
}
public void OnActivityResult(int requestCode, int resultCode, Intent intent)
{
Log.i("result", "hit line");
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
TextView tv1 = (TextView) findViewById(R.id.textView1);
TextView tv2 = (TextView) findViewById(R.id.textView2);
if(scanResult != null)
{
System.out.println("format: " + scanResult.getFormatName());
System.out.println("contents: " + scanResult.getContents());
tv1.setText(scanResult.getFormatName());
tv2.setText(scanResult.getContents());
}
else
{
tv1.setText("ERROR");
}
}
TextView1 从不说“错误”,因此 scanResult 似乎不是 null 并且我的 Log.i() 行从未被击中,所以我认为 onActivityResult 甚至没有被击中。
这可能与为 OnClick() 方法制作 IntentIntegrator final 有关吗?当我在 OnClick() 中创建 IntentIntegrator 时,我使用 getParent() 将 Activity 传递给构造函数,但是这强制关闭了我的应用,并在 IntentItegrator 中出现 NullReferenceException。
我是否正确使用了库?
感谢您的宝贵时间,
斗篷
【问题讨论】:
-
你有 CaptureActivity 类吗?
-
嗨,不,我只有 1 个主要活动,教程是否提到了 CaptureActivity 类?
-
我已将 IntentIntegrator 和 IntentResult 类复制到我的应用程序中,并将 Zxing 应用程序安装为单独的应用程序(称为 Barcode Scanner)。
-
请同时发布与您的
IntentIntegrator相关的代码,因为它似乎会成就或破坏此功能。调用 getParent() 也是错误的:如果您不想在onClick中有最终 IntentIntegrator,您可以调用YourActivityName.this -
FWIW,这是一个工作示例项目,几乎可以完成您的代码所做的所有事情:github.com/commonsguy/cw-omnibus/tree/master/Camera/ZXing
标签: android android-intent zxing