2012-02-03 31 views
0

我在想Android是否可以在AndroidManifest中聲明不同的活動(例如.ActivityA.ActivityB)並使用相同的類文件。在Android中,我可以使用相同的類文件進行不同的活動嗎?

這是可以實現的嗎?

一個可能的解決方案是基類,然後創建從該基類繼承的其他類文件。但是除了擁有多個類文件之外,還有其他方法嗎?

我的意思是,代碼應該幾乎相同,我需要這兩個活動。可能需要一些ifs,這取決於所調用的活動。

你會如何解決這個問題?

[編輯]

由我不認爲我自己很清楚,我們對此深感抱歉的答覆來看。 但我明確需要有不同的活動。沒有一個人通過Intents傳遞不同的值。

回答

1

一個可能的解決方案是基類,然後創建從該基類繼承的其他類 文件。

  • 這是最好的實施。

一對夫婦IFS在這裏和那裏可能取決於 活動需要被稱爲雖然。

+0

我對國家模式有點困惑,究竟是什麼對我的情況有好處(也許我真的沒有得到它的目的)。 – 2012-02-03 17:41:28

0

取決於您想要如何訪問活動。您是否根據應用程序中的某些邏輯創建了不同的Activity子類?他們是否需要從應用程序外部響應不同的意圖?如果是第一種情況,您可能很容易重用單個Activity類,並通過Intent中的Bundle傳遞條件信息(您正在查看的內容爲ifs)。否則,你可能最適合在自己的文件中創建單獨的Activity子類。

爲什麼關注每個文件多個類?

+0

我明確需要有不同的活動(更新我的問題)。我很抱歉,但我不明白你的最後一個問題...... – 2012-02-03 14:47:09

+0

你說你需要不同的顯式活動,但是你沒有說過讓他們「在同一個班級文件中」這麼重要的原因。 – 2012-02-03 15:06:12

+0

由於代碼基本相同,我不想在不同的文件中重複該代碼。對於這個問題的常見解決方案是一個基類,並從那個擴展我的活動,但我只是想知道是否有另一種方法可以讓我爲同一個類文件聲明2個活動。也許在清單或某事上有一些「竅門」。 – 2012-02-03 17:40:41

0

您可以創建具有常用功能的abstract class CommonActivity extends Activity,並且活動A和B都將擴展此功能。在清單中,你必須提及A和B,沒有共同之處。

0

我的意思是,代碼應該幾乎相同,我需要這兩個活動。根據所調用的活動,可能需要一些ifs。

如果他們只是根據您調用的內容和方式進行少量更改,則可以通過使用Intent向其傳遞值來使用相同的Activity類。假設你正在通話中 「CommonActivity」 爲 「A」 型,然後同時呼籲 「CommonActivity」 使用:

Intent intent = new Intent(this, CommonActivity.class); 
intent.putExtra("calledForType", "A"); 

在你CommonActivity:

String calledForType = ""; 
public void onCreate(Bundle savedInstanceState) { 
    ...... 
    calledForType = this.getIntent().getStringExtra("calledForType"); 
    calledForType = calledForType.toUpper(); // Better for comparing later 
} 

現在,無論你必須處理與如果公司的differnces使用:

if (calledForType.equals("A")) { 
    // Do This For A 
} else if (calledForType.equals("B")) { 
    // Do this for B 
} 

// Do this for common 

這樣,您可以處理N個活動。

+0

我明確需要有不同的活動(更新我的問題)。 – 2012-02-03 14:47:48

+0

@RicardoAmaral,如果你需要有不同的活動,那麼問題是什麼。最好的選擇是使用BaseActivity並將其擴展爲Activies。幾乎所有的相似之處。僅在ActivityA中包含...,class。 – Tvd 2012-02-03 14:52:41

+0

這本身並不是問題,但我不知道Android框架爲開發人員提供的所有可能性,我決定詢問是否有更好/更簡單的方法。就這樣。 – 2012-02-03 17:36:52

相關問題