2013-05-09 51 views
0

我得到了這個問題,我在活動A中有一個處理程序,用於顯示一些消息 ,具體取決於Message.what屬性,到目前爲止,我有第二個活動(活動B)這是由活動A開始,我需要從活動A相同的處理程序使用它在活動乙 (我嘗試了這麼多的東西,谷歌它並沒有)我最終複製代碼 處理程序A到B,但我真的知道這是如此錯誤(不知道如果必要的處理程序),在這裏我會發布一些我發現和嘗試的解決方案:處理程序:在android上重複代碼

靜態變量:Accessing instance of the parent activity?,它的工作原理,但有時靜態成員爲空班級不再加載,因爲有些人說這可能會引起一些關於存儲在內存中的靜態成員的一些泄漏,我使用Activity狀態做了一些處理(當Activity A調用onDestroy時,將其設置爲null, 在Activity的方法onResume和onCreate上設置引用「static variable」= this A ,在此之後,當我們失去加載的類時,代碼仍會在「靜態變量」處出現預期的NullPointerException。我試過的另一件事是MyOwnHandler(一個由我創建的類擴展Handler並實現Serializable,試圖通過Intent.putExtra傳遞它),但是我注意到當我想到Handler有一些它的方法與final 。

對此問題有何建議?我想在活動B上重複使用活動A上的處理程序, 提示:如果我在活動B代碼中獲得了活動A的確切運行實例,並且需要某些示例,那麼我可以將它們放在一起以防萬一它們是必需的。

編輯:根據需要。

private Handler mHandler = new Handler() { 
     public void handleMessage(Message msg) { 
      Toast toast; 
      switch (msg.what) { 

      case 3: 
       toast = Toast.makeText(getBaseContext(), 
         "The user is already saved.", Toast.LENGTH_LONG); 
       toast.setGravity(Gravity.CENTER_HORIZONTAL 
         | Gravity.CENTER_VERTICAL, 0, 0); 
       toast.show(); 
       break; 
      case 2: 
       toast = Toast.makeText(getBaseContext(), 
         "The entered e-mail couldn't be found in database.", 
         Toast.LENGTH_LONG); 
       toast.setGravity(Gravity.CENTER_HORIZONTAL 
         | Gravity.CENTER_VERTICAL, 0, 0); 
       toast.show(); 
       break; 
} 
} 
}; 

這個Handler成員是私人的,可以是公開的或默認的,但仍然不相關。 好吧,讓我們說這個代碼是在活動A中,我想爲活動B使用相同的確切代碼,活動B由A通過意圖啓動,我今天嘗試@pskink答案,似乎是這樣的解決方案,無論如何,我我仍然在聽命題。

問候。

+0

你能提供一些代碼嗎?因爲我不確定明白你真正想要什麼。 – cremy 2013-05-09 20:17:38

回答