看板 AndroidDev 關於我們 聯絡資訊
↓用書上範例改的一個球體掉落程式 http://www.mediafire.com/?nsgncnzsc6tljnn 球體會受到startVY大小(這裡我沒給值 可以給值試試) 的影響而向上彈起至不同的高度 我打算從test傳一個值給Sample_7_1這個class 讓它去取代原本在Movable的startVY 方便我可以每次輸入不同數字就能呈現不同的結果 但是我不太清楚該如何讓Movable去認startVY這個值 朋友叫我放一個function也就是saveVY(float VY) ←在Movable那 然後再去Sample_7_1把值存入後就能用了 但雖然編釋沒問題 但正式執行後按下BUTTON後卻顯現錯誤訊息 (所以我連結的程式碼以先將t.saveVY(startVY);作註解 否則不能正常執行結果) 是我saveVY的寫法錯誤嗎 還是說有別種的寫法呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.41.132.71
LaPass:用Bundle把t傳過去,妳用bundle去查,應該可以找到詳細的說 03/17 19:19
LaPass:明。 03/17 19:19
LaPass:onCreate(Bundle savedInstanceState) <= Bundle在這裡 03/17 19:20
lin790505:用Bundle傳t ? 怎麼傳一個Thread進surfaceview? 03/17 19:38
lin790505:沒看到類似的語法啊 03/17 19:38
LaPass:是傳給activity還是傳給surfaceview? 妳不是說t.saveVY() 03/17 19:43
LaPass:錯誤嗎? 那是因為妳之前沒指定t,才會出現nullpointer 03/17 19:44
LaPass:還是妳在DrawThread.java那邊有問題?如果是這樣..... 03/17 19:47
LaPass:其實Thread本身也是一個物件,把直傳進去的方法,把一般把 03/17 19:47
LaPass:值傳給物件的方法一樣。看妳要用static傳,或是直接在建構 03/17 19:48
LaPass:子中傳進去都ok。 03/17 19:48
LaPass:如果是複雜、需要即時性的東西,丟個callback給他也可以 03/17 19:49
LaPass:※ 把"值"傳進去的方法,"跟"把一般... 03/17 19:50
這是test.java傳的資料 Intent intent = new Intent(); intent.setClass(test.this, Movable.class); Bundle bundle = new Bundle(); bundle.putString("speed", et.getText().toString()); intent.putExtras(bundle); startActivity(intent); 然後Sample_7_1.java接受 Bundle bunde = this.getIntent().getExtras(); float startVY = Float.parseFloat(bunde.getString("speed")); 但我這邊畫面要引用BallView bv; //BallView物件引用 來當這頁的view而不是用layout bv = new BallView(this); //新建BallView物件 setContentView(bv); //設定BallView物件為螢幕 可是我希望把test.java那邊過來的startVY 拿來取代我用來描述球體性質的Movable.java上(然後BallThread會拿來計算球速) 所以我在Sample_7_1.java加了這行 t.saveVY(startVY); //t為Movable物件引用 並在Movable.java上放入以下function public void saveVY(float VY){ this.startVY = VY; }; 結果編釋無誤 執行時我期望輸入數字後 按下Button應該會跳另一個view並呈現相應於輸入數字的球體變化 但卻出現sorry! 主要狀況大約是這樣 可能排版不是很好= = ※ 編輯: lin790505 來自: 114.41.132.71 (03/17 20:20)
LaPass:Sample_7_1.java 少 t= new Movable(.....); 03/17 21:02
LaPass:然後,請把錯誤訊息 NullPointerExp.... 那個拿去google 03/17 21:02
lin790505:THE APPLICATION SAMPLE_7_1 (PROCESS WYF.WPF)HAS 03/17 23:09
lin790505:STOPPED UNEXPECTEDLY. PLEASE TRY AGAGIN. 03/17 23:09
LaPass:呃.... 妳會不會看logcat? 去google logcat 03/18 00:51