2015-10-09 66 views
0

好的,所以我爲我的自定義頂級菜單欄做了一個類,因爲我認爲這會很方便。現在我有一個小問題。我想MainActivity.class來處理顯示哪些視圖和什麼。但是onClick偵聽器在TopMenu.class之內在其他類中激活MainActivity中方法的最簡單方法是什麼? (如果有的話)從另一個類的MainActivity運行代碼

MainActivity.class方法:

public void setScene(String scene) {...} 

TopMenu.class:

private void clickButton(String btnName) { 
    if (active) { 
     switch (btnName) { 
      case "Run": { 
       //Example of what I want... 
       parentContext.setScene("test"); 
       break; 
      } 
      case "Shop": { 
       break; 
      } 
      case "Play": { 
       break; 
      } 
      case "List": { 
       break; 
      } 
     } 
    } 
} 

我有Context的副本,並從MainActivityView如果已經與幫助該過程...

回答

0

您必須將上下文作爲您的活動投入使用(因爲Context類不包含在名爲setScene的方法中)。

事情是這樣的:

if(parentContext != null){ 
    ((MainActivity)parentContext).setScene("test"); 
} 

或者,你可以創建一個接口:

public interface SceneControlInterface { 
    public void setScene(String scene); 
} 

然後,當你實例化你的TopMenu的,你可以通過你的接口的實例給它(當然你必須修改你的構造方法來接受它):

TopMenu mMenu = new TopMenu(new SceneControlInterface(){ 
    @Override 
    public void setScene(String scene){ 
     //do something with scene 
    } 
}); 
0

創建一個幫助器c這種方法持有你的setScene(...)方法。使用Singleton模式或者簡單地聲明setScene(...)作爲靜態方法。

public class SceneHelper{ 
     public static void setScene(String scene, View viewToBeChanged){ 
      //Your stuff 
     } 
    } 

這將是一種方式。

相關問題