2011-12-04 87 views
0

所以,我正在爲Android編寫一個程序。現在,我在一個名爲GraphicsView的類中,該類擴展了View並實現了View.OnClickListener。我創建了一個按鈕,當按下時應該將對象向左移動。我試圖讓它顯示在屏幕的左下角。在我的構造函數GraphicsView我的代碼:當我嘗試調用我的按鈕的方法時,爲什麼我的程序崩潰?

mLeft = new Button (context.getApplicationContext()); 
mLeft.setId (1); // wasn't sure what else to set for an id, I only did that to see if it would fix anything 
mLeft.setOnClickListener (this); 

在我的onDraw我:

mLeft.draw (canvas); 

只需這段代碼,程序運行正常,當我去到活動中使用GraphicsView的工作原理完全正常,除了那個按鈕沒有出現在任何地方的面。

我也有這個母鹿在我的構造函數,右邊的setOnClickListener如下:

mLeft.setX (0); 
mLeft.setY (mDisplay.getHeight() - 64); 
mLeft.setHeight (64); 
mLeft.setWidth (64); 
mLeft.setBackgroundColor (80000000); 
mLeft.setText ("<"); 

每當我在那裏有這個代碼,我去那個活動,程序崩潰。我在那裏有onClick,除了頂部的「Button mLeft」以外,這是我與此按鈕關聯的所有代碼。基本上,每當我嘗試從Button調用任何這些方法時,程序看起來都會崩潰。我已經嘗試過對這些內容進行評論,一次只能在代碼中出現其中一個,所以我知道他們每個人都可以單獨殺死該程序。

LogCat說:「12-04 15:11:03.581:I/dalvikvm(2692):無法找到從方法edu.pacificu.cs.Views.GraphicsView引用的方法android.widget.Button.setX。 「

謝謝你的幫助。

+2

Button.setX ... API lvl 11 ... – Selvin

回答

0

mLeft = new Button (context.getApplicationContext());

不要那樣做。使用new Button(context),然後只有contextActivity。除非您知道正是爲什麼您使用,否則請勿使用getApplicationContext()

的logcat的說:「12-04 15:11:03.581:I/dalvikvm(2692):找不到方法android.widget.Button.setX,從方法edu.pacificu.cs.Views引用。 GraphicsView「。

正如@Selvin指出的那樣,您似乎是使用Android 2.x上不存在的方法(setX())在Android 2.x上運行此應用程序。 setX()setY()主要用於動畫效果(例如幻燈片)。您的View的X/Y/Z位置由其容器(佈局)和容器的配置決定。

+0

非常感謝:)所以按鈕將有方法來設置佈局的位置,寬度和高度? –

+0

@TaylorMatyasz:正如我寫的,「視圖」的X/Y/Z位置由其容器(佈局)和容器的配置決定。請閱讀一些Android編程教程和示例,以瞭解這些實例,因爲這些示例中的*浩大*多數使用普通容器(例如'LinearLayout',將小部件放在行或列中)。 – CommonsWare

+0

非常感謝!我想我現在已經明白了這一點。 –

相關問題