獲得

2010-04-27 23 views
0

我已經使用了一些不錯的教程對我的Android畫圖了一個gestureoverlayview。我想還可以添加在涼爽的手勢演示在這裏找到:獲得

http://developer.android.com/resources/articles/gestures.html

這需要幾行代碼:

GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures); 
gestures.addOnGesturePerformedListener(this); 

這是罰款和花花公子但我在演示中,我很明白試圖使用「在Android中使用圖形進行遊戲」中的代碼進行構建。該演示是有意義的,一切是有道理的,但我發現,通過使用:

setContentView(new Panel(this)); 

如通過玩圖文教程需要,那麼findViewById似乎不再有效並返回null。起初,我正要發佈一個愚蠢的問題,爲什麼會發生這種情況,使用setContentView進行快速測試讓我意識到findViewById返回null的原因,我只是不知道如何解決此問題。我在這裏失蹤的關鍵是什麼?我意識到新面板正在吸引一些參考,但我不知道如何在這裏建立連接。

的: R.id.gestures 定義正確的詮釋,他的main.xml爲:(就像教程)

<android.gesture.GestureOverlayView 
    android:id="@+id/gestures" 
    android:layout_width="fill_parent" 
    android:layout_height="0dip" 
    android:layout_weight="1.0" /> 

所以,我沒有確認

setContentView(new Panel(this)) 

導致問題。所以我知道問題是我必須弄清楚如何將android.gesture.GestureOverlayView以某種方式添加到面板類中,但我不確定如何去做這件事。

與此戰鬥後,我大致知道我需要什麼剛纔怎麼做它做。我想我需要的是在main.xml中創建面板的等價物,或者想出如何在代碼中爲手勢構建main.xml中的什麼。我很近,因爲我這樣做了: GestureOverlayView gestures = new GestureOverlayView(this);

現在我得到了一個非null的手勢,不幸的是,因爲我沒有告訴它在任何地方填充Parent,我不認爲它真的顯示出來,所以我正在努力弄清楚佈局。我是否在正確的軌道上?

回答

0

我一直在努力通過一些樣本代碼自己,並且還沒有真正寫任何有意義的事,但也許它是那樣簡單,系統找不到觀點,因爲你已經設置了另外一個?

大部分樣本都在的setContentView的資源(例如setContentView(R.id.gestures))的參考,不是嗎?因此,稍後不能發現該觀點並不令人驚訝。 ...除非我完全沒有福利局在這一點上...

+0

嗯不相信我的評論曾經得到早些時候公佈。但是,我懷疑在我的例子中,例如它的setContentView(new Panel());所以是的,我設置了一個不同的系統,但爲什麼系統不能找到視圖,或者我怎麼告訴它找到視圖?必須有另一種方式,關於android的一件事讓我瞭解.xml文件的所有用法。但我正在學習... – Codejoy 2010-04-28 06:36:17

0

爲了findViewById的工作,它需要知道哪些佈局文件的情況下使用。這就是setContentView的用途。既然你定義main.xml中的佈局,你需要調用

setContentView(R.layout.main); 

(而不是其他任何調用的setContentView)告訴那就是它應該使用的佈局活動。一旦你這樣做,findViewById將知道在哪裏尋找ID爲「手勢」的視圖。