2012-05-22 82 views
0

爲了簡化一些代碼,我想知道的,這樣而不是5你可以參數化一個意圖創建功能嗎?

public void showSettings(View view) { 
    Intent SettingsActivity = new Intent(MainActivity.this, Settings.class); 
    startActivity(SettingsActivity); 

我可以這樣做以下

如果可能的參數是在推出一個Android應用程序的活動代碼,
public void showActivity(View view, String ActivityName) { 
     Intent ActivityName = new Intent(MainActivity.this, ActivityName.class); 
     startActivity(ActivityName); 

然後,在用戶界面中的每個按鈕,我簡單應用以下的「點擊」事件

showActivity(設置);

showActivity(結構域);

這會在我的應用程序中節省大約40-50行代碼。很明顯,我知道上面的代碼是不正確的,但我不確定是否有可能做到我想要完成的任務。

+0

你不能只通過類(例如ActivityName.class)作爲參數來創建你的意圖嗎? – AxelTheGerman

+0

**不要嘗試通過傳遞字符串來簡化代碼,以便引用其他類型或對象。編譯器可以幫助你將正確的對象放在正確的位置 - 任何與你自己匹配的字符串都容易出現編譯器可能阻止的錯誤。 – derekerdmann

回答

2

如何像:

public <T> void showActivity(View view, Class<T> activity) { 
    Intent activityName = new Intent(MainActivity.this, activity); 
    startActivity(activityName); 
} 

您可以

showActivity(Settings.class); 
+0

真棒。我知道字符串不是我正在尋找的,但我不知道如何使用字符串部分來標記該類。謝謝! –

1

調用它,我建議你使用的行爲(字符串),而不是指定確切的上下文和類。這樣你甚至可以在應用程序之間共享活動,如果你決定切換到不同的活動類,你可以只編輯android清單,而不是編輯所有的java源代碼調用這個活動。

相關問題