推 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