2015-11-17 107 views
0

我想調用在活動中聲明的方法。此方法在更多Activity中聲明,但有不同的工作要做。我也有一個簡單的java類,我想從當前活動中調用此方法。 所以我需要一種方法從當前活動中調用此方法,而不是從某個活動中調用。有什麼辦法可以做到嗎?我已經試圖將當前活動的背景和活動提供給班級,但我不知道該怎麼做。我thougt是這樣的:從活動調用方法

Actitvity:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Todo t = new Todo(this,this); 
} 

public void example(){ 
    //here do something 
} 

Java類:

public class Todo { 

Context context; 
Activity activity; 

public Todo(Context context,Activity activity){ 
    this.context = context; 
    this.activity = activity; 
} 
public void eventhere(){ 
    activity.example(); 
} 
} 
+0

你需要一個接口。 – njzk2

+0

或創建一個baseActivity,將其用作每個其他活動的Parent活動。在基礎中聲明你的方法並在子活動中定義它 – AAnkit

+1

這實際上是一個比Android問題更多的Java問題。建議您在嘗試創建Android應用程序之前對Java編程語言有基本的瞭解。只是一些友好的建議。 – aeskreis

回答

0

我希望你的例子是過於簡單化了,因爲你的活動是創造的一個實例Todo類,這樣它就可以調用其中的方法來調用Activity類中的方法。

這與剛剛調用它自己的方法的Activity完全相同,並且完全將Todo對象全部取出。所以,也許如果你更詳細地解釋你想要做什麼,我們可以指出你在正確的方向。

但是,我會猜測。它看起來像你可能試圖實現命令模式,你的Todo對象充當命令。 也許你想在其他地方創建這些命令,並在稍後執行它們?

我認爲一個有趣的方式來做到這一點將是使用消息總線。例如,Todo的不同子類在'執行'時可以在總線上放置一個不同的'消息'對象。然後,活動可以訂購公交車,並通過調用適當的方法來響應公交車消息。

這種模式會使事情鬆散耦合。 Todo對象不需要特定Activity子類的知識,並且這些Activities不需要知道Todo對象。唯一的共同點就是巴士和巴士上的信息。