android-studio - Android 作用域傳遞問題?
問題描述
我在寫App的時候好多Activity都在做同一個事情,就是操作各個Activity的界面的同一個部分。所以我希望把這些做同一個事情的相同代碼拿出來做一個類的靜態方法,下次需要做這個事情就直接調用,不要重復寫同樣的代碼。于是我這樣做的:
就這樣把Context傳遞過去了,但是獲取不到那個Context的變量和方法,這個應該怎么實現啊?難道我必須要在幾個Activity寫出相同的代碼?
問題解答
回答1:1.把相同的方法抽象到BaseActivity中。
回答2:你可以在Activity A中寫共用代碼,然后需要用到共同代碼的Activity繼承Activity A
回答3:可以采用Mvp模式,將邏輯控制層相同的一部分放到Preserent層來管理。
回答4:if(c instanceof MainActivity){ ((MainActivity) c).colorfulPanelTimerTask = new TimerTask(){... }}回答5:
能告訴我這個方法是做什么用的嗎? 因為你的返回類似是void,所以肯定是要通過contxt做些什么事情
回答6:如果你的相同部分的代碼是界面和對應的邏輯用Fragment就好了,為什么要傳遞? 傳遞Context一般只為了使用Context的方法,而不是向下轉成具體的Activity,這樣反而過于耦合。 如果相同部分的代碼是一小段代碼,那把這些代碼放到一個BaseActivity里面,然后讓其他Activity繼承它。
回答7:你的java還未入門,先打好基礎
回答8:1.如果是公用方法而且實現的功能是相同的:寫一個Activity的基類BaseActivity將公用方法寫在基類中提供給子類調用2.若公用方法實現的功能不同,方法名相同:同樣是創建基類BaseActivity并寫一個抽象方法,具體實現在子類中完成PS:傳遞context肯定是拿不到Activity里面的對象,至少要寫((Activity)context)
回答9:寫一個抽象父類。將共用方法放進去。
相關文章:
1. Docker for Mac 創建的dnsmasq容器連不上/不工作的問題2. docker - 如何修改運行中容器的配置3. docker安裝后出現Cannot connect to the Docker daemon.4. java - instance method中 static后的<K>是什么意思?5. python3.x - python連oanda的模擬交易api獲取json問題第五問6. 錯誤:java.lang.NoSuchMethodError:org.objectweb.asm.ClassWriter。<init>(I)V7. java - SSH框架中寫分頁時service層中不能注入分頁類8. php - 一個操作請求多個服務如何保證數據的安全?9. docker-machine添加一個已有的docker主機問題10. debian - docker依賴的aufs-tools源碼哪里可以找到啊?
