[問題] 傳值給Thread用

看板AndroidDev作者 (舞踏linkl)時間14年前 (2012/03/17 13:38), 編輯推噓5(5013)
留言18則, 2人參與, 最新討論串1/1
↓用書上範例改的一個球體掉落程式 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

03/17 19:19, , 1F
用Bundle把t傳過去,妳用bundle去查,應該可以找到詳細的說
03/17 19:19, 1F

03/17 19:19, , 2F
明。
03/17 19:19, 2F

03/17 19:20, , 3F
onCreate(Bundle savedInstanceState) <= Bundle在這裡
03/17 19:20, 3F

03/17 19:38, , 4F
用Bundle傳t ? 怎麼傳一個Thread進surfaceview?
03/17 19:38, 4F

03/17 19:38, , 5F
沒看到類似的語法啊
03/17 19:38, 5F

03/17 19:43, , 6F
是傳給activity還是傳給surfaceview? 妳不是說t.saveVY()
03/17 19:43, 6F

03/17 19:44, , 7F
錯誤嗎? 那是因為妳之前沒指定t,才會出現nullpointer
03/17 19:44, 7F

03/17 19:47, , 8F
還是妳在DrawThread.java那邊有問題?如果是這樣.....
03/17 19:47, 8F

03/17 19:47, , 9F
其實Thread本身也是一個物件,把直傳進去的方法,把一般把
03/17 19:47, 9F

03/17 19:48, , 10F
值傳給物件的方法一樣。看妳要用static傳,或是直接在建構
03/17 19:48, 10F

03/17 19:48, , 11F
子中傳進去都ok。
03/17 19:48, 11F

03/17 19:49, , 12F
如果是複雜、需要即時性的東西,丟個callback給他也可以
03/17 19:49, 12F

03/17 19:50, , 13F
※ 把"值"傳進去的方法,"跟"把一般...
03/17 19:50, 13F
這是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)

03/17 21:02, , 14F
Sample_7_1.java 少 t= new Movable(.....);
03/17 21:02, 14F

03/17 21:02, , 15F
然後,請把錯誤訊息 NullPointerExp.... 那個拿去google
03/17 21:02, 15F

03/17 23:09, , 16F
THE APPLICATION SAMPLE_7_1 (PROCESS WYF.WPF)HAS
03/17 23:09, 16F

03/17 23:09, , 17F
STOPPED UNEXPECTEDLY. PLEASE TRY AGAGIN.
03/17 23:09, 17F

03/18 00:51, , 18F
呃.... 妳會不會看logcat? 去google logcat
03/18 00:51, 18F
文章代碼(AID): #1FP2CyNr (AndroidDev)