2014-09-19 58 views
0

我有這樣的問題: 我有一個活動和二級MyGLSurfaceView,MyGLRenderer從活動將數據發送到一個類中的Android

在活動存在產生不同數量的線程,我要送這變量MyGLRenderer。

我不能通過構造函數的參數傳遞這個變量:/ 這是一種不同的模式來從一個活動發送變量到一個類?我能怎麼做 ?

+0

獲得價值創建'MyGLRenderer'的方法,使活動送價值。 – 2014-09-19 20:14:21

+0

問題是在Activity中沒有MyGLRenderer對象,但只有一個MyGLRenderer變量。因此,唯一的模式是在MyGLSurfaceView中實現一個函數,它調用MyGLRenderer的函數?沒有其他辦法? 也許我可以做: myglviewobject.myrendererobject.variable? – aeroxr1 2014-09-19 20:25:01

+0

「MyGLRenderer對象,但只有一個MyGLRenderer變量」......嗯......聽起來你需要閱讀一個參考變量是什麼。或者這是你評論中的錯字? – 2014-09-19 20:33:05

回答

0

也許這不是很清楚的解決方案,但你可以考慮使用EventBushttps://github.com/greenrobot/EventBus哪些腳限制某些特定於android的情況。

註冊EventBus在你類的構造函數一樣

EventBus.getDefault.register(this); 
在您的活動 onCreate()onDestroy()方法

register()/unRegister()

當你只需要從activity崗位價值像

EventBus.getDefault().post(new WhateverObject());

而在其他類

public void onEvent(WhateverObject object){ 
//doing stuff 
} 
+0

謝謝:) 你的解決方案和聲明公共變量有相同的性能嗎? – aeroxr1 2014-09-19 20:44:16

+0

當然,它並不是那麼快(我們在生產中使用它,支持minSdk 7很好),它可以很好地解耦活動和類,消除冗餘接口。 – 2014-09-19 20:58:28

0

你可以改變構造以匹配您發送

例如說法:如果你想通過串

MyGLRenderer(String s) 
{ 
// store it to local variable and use it 
} 

,你可以在MyGLRenderer類中聲明公共變量和從你的Actvity

+0

感謝大家:) 我選擇了公共變量的解決方案,因爲我認爲這對我來說更容易:) – aeroxr1 2014-09-21 09:14:29

相關問題