Android系统。为什么活动1中的图像最终会出现在活动2中? (Zxing CaptureActivity是活动2)

时间:2011-11-23 01:33:37

标签: android zxing

在我开始打扮界面之前,所有人都在开发新的应用程序。

为了方便用户和我的自定义控件,我在项目中实现了zxing条形码扫描器。

我对CaptureActivity所做的唯一更改是处理扫描结果。我还浏览了AndroidManifest.xml并删除了意图过滤器,以避免我的应用程序被提供条形码扫描器应用程序处理的请求。 (让Android操作系统提供我的活动与Xzing的条码扫描器难以获得的“非常棒”一起感觉不对。

我在索引活动中添加了两个ImageView,其中一个触发了扫描程序。有趣的是,扫描仪中显示的图像不是链接到扫描仪的图像。

总之,2个用于导航的图像,第二个图像导致扫描仪,第一个图像阻挡了我的扫描仪视图。

enter image description here

起初我更改了资产的名称(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如果您觉得我的解决方案有点臃肿,请随意编辑我的问题。

2 个答案:

答案 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,而且它没有使用你认为的代码。这是复制和粘贴我们项目的症状。我们强烈反对从克隆开始;已经有太多的了。编写自己的扫描仪应用程序并根据需要重复使用碎片会更好(并且可能不易出错)。