2011-11-23 83 views
2

一切都很好開發一個新的應用程序,直到我開始打扮界面。Android。爲什麼活動1中的圖像會在活動2中結束? (Zxing CaptureActivity是活動2)

爲了方便用戶和我的自定義控件,我在我的項目中實現了zxing條碼掃描器。

我對CaptureActivity所做的唯一更改是處理掃描結果。我還拍攝了AndroidManifest.xml文件,並帶走了意圖過濾器,以避免我的應用程序被提供給條形碼掃描器應用程序處理的請求。 (它不覺得正確的安卓操作系統提供我的活動旁邊的Xzing的條碼掃描器辛苦賺來的「真棒」)

我添加了兩個ImageViews到我的索引活動,其中1個觸發掃描儀。有趣的部分是,掃描儀中顯示的圖像不是鏈接到掃描儀的圖像。

總之,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中所做的唯一更改是在讀取條形碼後觸發的代碼中。

UPDATE

我嘗試設置啓動器CaptureActivity並且圖像沒有顯示像在屏幕截圖起來。這是Pawan的建議,我認爲我們都希望這個問題能夠複製,這樣我就可以開始尋找我已經從我的名單中刪除的一個地方。 (這就是我發現我的鑰匙時,他們都將丟失)

更新2

我試過(add_tag)改變ImageView的問題,以一個按鈕---沒有變化 如果我刪除從ImageView的問題XML,而不是一個適用的解決方案,問題消失。 這是什麼時候該png已經加載到內存中。我的索引活動中加載的圖像比上面描述的要多,但add_tag圖像始終顯示在相機上。然後,如果我將圖片資源保存在res/drawable中,但不會將其加載到索引活動中,則它不會在相機上顯示。

活動1中的圖片最終會在activity2中出現什麼原因? 如何清理Index活動,以便它好像xml從未在onStop中加載過圖像?

UPDATE 3 我不再遇到問題,可以繼續。我仍然不確定它是否與普通相機或Zxing有關。 考慮到Sean對Java.R的建議,我嘗試刪除導致問題的drawable,重命名,插入到項目中。這並不完全正常。
當我將可繪製副本添加到項目中時就解決了。
提拉文件夾現在開始與 add_card add_tag ...等

如果我把我的ImageView在指數活動add_card,出現問題,如果我把我的ImageView到add_tag不會出現問題。這使我相信第一個(按字母順序)可繪製資源將與Scanner 發生衝突我將保留一個佔位符圖像,我永遠不會將其加載爲可繪製文件夾的頂部並保持手指交叉。

有一些思考。 (我仍然願意向某人解釋爲什麼會發生這種情況)

PS如果您覺得我的解決方案有點臃腫,請隨時編輯我的問題。

+0

你可能會考慮附加一些代碼。此外,我很困惑ImageViews如何觸發「掃描儀」。這些可點擊的圖像?你總結3張圖片,中間導致導航和第一張圖片阻礙你的觀點,第三張圖片在哪裏? – Jack

+0

@傑克我試圖爲你澄清。 –

+0

Zxing代碼充滿了Customization,嘗試瞭解代碼的流程以及UI,順便說一句,我可以知道在哪個xml中添加了這個ImageView。 – Pawan

回答

1

最可能的解釋是您生成的R.java文件與編譯的代碼不同步。

你的字節碼可能指的是已經改變的常量值,所以現在指向錯誤的圖像。只要清理並重新編譯,如果是的話。但我不認爲就是這樣。

我想你已經從我們的代碼和你的代碼中獲得了資源ID,但它並沒有使用你認爲的那個。這是複製粘貼我們項目的症狀。我們強烈不鼓勵從克隆開始;已經有太多了。編寫自己的掃描程序應用程序並根據需要重新使用部分和片段會更好(也可能不太容易出錯)。

+0

我很高興看到是誰回覆了。你說得對「但我不認爲就是這樣」。我只是試圖使用你的庫進行掃描和編碼,(編碼上的自定義外觀),並認爲克隆不是最好的開始。我將保存重寫掃描/編碼,直到項目的後期,以便我可以在早期取得更多進展。 –

+0

好的。我認爲有兩個「R」類的副本在浮動,並沒有使用你認爲的那個。或者,你實際上在某處導入了錯誤的R。我確實認爲這可能是或靠近它。 –

+0

非常感謝您的幫助肖恩,我解決了這個問題(儘管我說我會繼續前進),但對於我的解決方案爲什麼還是有點困惑。 「我確實認爲這可能是或者接近它。」肯定是一個真實的聲明 –

2

只有當xing的CaptureActivity從處於橫向模式的活動「調用」時,該錯誤纔會顯現出來。如果「調用」活動在portait中不會發生錯誤。 CaptureActivity的後續調用在橫向模式下均可用。 我找不到確切的原因,但效果是CaptureActivity中的視圖「autoset」對於背景是可繪製的,因此阻礙了相機視圖。 幸運的是,有兩種可能的解決方法: 1. Maudicus發現自己:將一些圖像文件放在res/drawable /中,首先按字母順序排列,例如aaa.png。 2.去除背景繪項目在運行時是這樣的:

((TextView) findViewById(R.id.status_view)).setBackgroundDrawable(null); 
((ViewfinderView) findViewById(R.id.viewfinder_view)).setBackgroundDrawable(null); 

放置在onCreate()代碼只是吼叫setContentView(R.layout.capture);

根據佈局中可見的內容,您可能需要從更多視圖中刪除背景可繪製對象。

+0

謝謝,我要檢查你的解決方案。我會打電話給我一個解決方法,如果它有效的話,你會得到一個解決方案。 –

+0

這爲我工作。有完全相同的問題,並修復它。沒有添加任何新資源,只是使用了您發佈的兩行代碼。謝謝! – jhnclvr

相關問題