在我开始打扮界面之前,所有人都在开发新的应用程序。
为了方便用户和我的自定义控件,我在项目中实现了zxing条形码扫描器。
我对CaptureActivity所做的唯一更改是处理扫描结果。我还浏览了AndroidManifest.xml并删除了意图过滤器,以避免我的应用程序被提供条形码扫描器应用程序处理的请求。 (让Android操作系统提供我的活动与Xzing的条码扫描器难以获得的“非常棒”一起感觉不对。
我在索引活动中添加了两个ImageView,其中一个触发了扫描程序。有趣的是,扫描仪中显示的图像不是链接到扫描仪的图像。
总之,2个用于导航的图像,第二个图像导致扫描仪,第一个图像阻挡了我的扫描仪视图。
起初我更改了资产的名称(add_card.png为add_tag.png),我有一个干净的扫描仪视图,但从那时起,图像已经悄悄进入。
以下是一些索引活动代码
//in on create
ImageView view = (ImageView) findViewById(R.id.addTagButton);
view.setOnClickListener(addCardListener);
view = (ImageView) findViewById(R.id.scanButton);
view.setOnClickListener(scanListener);
// end of in on create
private OnClickListener addCardListener = new OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(), AddCard.class));
}
};
private OnClickListener scanListener = new OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(), CaptureActivity.class));
}
};
索引文件加载的一些xml
<ImageView android:src="@drawable/add_tag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="6dip"
android:layout_marginLeft="12dip"
android:id="@+id/addTagButton"
android:layout_gravity="bottom|left"
></ImageView>
我在CaptureActivity中所做的唯一更改是在读取条形码后触发的代码中。
更新
我尝试将启动器设置为CaptureActivity,并且图片没有像截图中那样显示。这是来自Pawan的建议,我认为我们都希望能够复制这个问题,以便我开始查看我已经从我的列表中划掉的一个地方。 (这就是我丢失时找到钥匙的方式)
更新2
我尝试将有问题的ImageView(add_tag)更改为按钮---没有变化
如果我从xml中删除了有问题的ImageView,而不是适用的解决方案,则问题就会消失。
这是png何时已加载到内存中的问题。我的索引活动中加载的图像比上面描述的多,但add_tag图像始终显示在相机上。然后,如果我将图像资源保留在res/drawable
中,但从未将其加载到索引活动中,则它不会显示在相机上。
来自activity1的图片最终会在activity2中出现的原因是什么? 如何清理Index活动,以便xml从未在onStop中加载图像?
更新3 我不再遇到问题,可以继续前进。我仍然不确定它是否与相机或Zxing有关。 考虑到Sean关于它与Java.R有关的建议,我尝试删除导致问题的drawable,重命名,插入到项目中。这并没有完全奏效 当我将我的drawable副本添加到项目中时,它解决了 drawable文件夹现在以 add_card add_tag ...等
如果我在Index活动中将我的ImageView设置为add_card,则会出现问题,如果我将我的ImageView设置为add_tag则不会出现问题。 - &GT;这让我相信第一个(按字母顺序)可绘制资源会与Scanner冲突 我将保留一个占位符图像,我从不加载作为可绘制文件夹的顶部并保持手指交叉。
有一些值得思考的东西。 (我仍然向某人解释为什么会发生这种情况)
PS如果您觉得我的解决方案有点臃肿,请随意编辑我的问题。
答案 0 :(得分:2)
只有当xzing的CaptureActivity从横向模式的活动中“调用”时,错误才会显现出来。如果“调用”活动在portait中,则不会发生错误。从横向模式对CaptureActivity的后续调用是可以的。
我找不到确切原因,但效果是CaptureActivity中的视图“自动设置”可绘制为背景,从而阻碍了摄像机视图。
幸运的是,有两种可能的解决方法:
1.由于Maudicus发现自己:只需将一些图像文件放在res / drawable /中,首先按字母顺序排列,例如aaa.png
。
2.在运行时删除背景drawables,如下所示:
((TextView) findViewById(R.id.status_view)).setBackgroundDrawable(null);
((ViewfinderView) findViewById(R.id.viewfinder_view)).setBackgroundDrawable(null);
将代码放在onCreate()
下方setContentView(R.layout.capture);
。
您可能需要根据布局中可见的内容从更多视图中删除背景绘图。
答案 1 :(得分:1)
最可能的解释是,生成的R.java
文件与已编译的代码不同步。
您的字节码可能是指已经改变的常量值,因此现在指向错误的图像。如果是这样,请清理并重新编译。但我认为不是这样。
我认为你的代码和你的代码都有资源ID,而且它没有使用你认为的代码。这是复制和粘贴我们项目的症状。我们强烈反对从克隆开始;已经有太多的了。编写自己的扫描仪应用程序并根据需要重复使用碎片会更好(并且可能不易出错)。