我正在提交一個展示廳的應用程序,在這一點上我創建了太多的課程。如何構建具有多項活動的應用程序?
主要觀點是包含所有系列轎車的GridView控件。(每個GridView控件項目打開一個新的類,所以有9個教學班,非常相似的代碼)
我怎樣組織的?
我正在提交一個展示廳的應用程序,在這一點上我創建了太多的課程。如何構建具有多項活動的應用程序?
主要觀點是包含所有系列轎車的GridView控件。(每個GridView控件項目打開一個新的類,所以有9個教學班,非常相似的代碼)
我怎樣組織的?
我實際上沒有時間寫下所有這些,意思是一個統一的班級,但這裏有提示。使用一個標誌來指示汽車的型號(例如Z4,M6),然後在類中使用它來確定代碼應該運行的樹。用字符串資源替換硬編碼的值(只要做到這一點,不需要其他評論)。在實例化類並使用它的函數時,請考慮該標誌並將其放入if()
條件或switch
的內部。如果某些模型需要比其他模型更多的代碼,則可以將其封裝在負責模型的代碼部分中。但是避免嵌套過多ifs,因爲它會變得混亂,就像定義了100個類,其中99%與其他類相同。總是儘可能地重新使用你的代碼。它會減少寫入(複製/粘貼)重複的東西,也會減少應用程序的大小,它將需要的內存等。結論:嘗試將類的公共部分組合成一個類(對於RULE THEM ALL :-))和使用標誌,讓程序知道在那裏做什麼。
要多放一點肉上@ g00dy,通過創建一個類
class BMW {
// Reference codes for every series
public final static int SERIES_1 = 0;
public final static int SERIES_2 = 1;
// etc
public final static int NUMBER_SERIES = 9;
// All the code needed for every car
// eg.
public String giveManufacturuer() {
return "BMW"; // But see @g00dy - use string resources
}
public String giveSeries() {
return XXXXX; // Depends on which approach you choose, see below
}
public String giveModelName() {
return XXXXX; // Depends on which approach you choose, see below
}
}
您可以的所有版本加載到這個類開始(在引用代碼添加對每一輛汽車,並設置了一些表來使索引變得容易)。
或者你可以使用繼承爲每個類擴展類:
class Series1 extends BMW {
@Override
public String giveSeries {
return "Series 1";
}
}
class Series1M3Door extends Series1 {
@Override
public String giveModelName {
return "3 Door";
}
}
然後,當您實例化最後一類是將所有三個功能正常工作。
這種方法很整齊,但仍會給你很多課。我懷疑,對於你正在做的事情,一些深思熟慮的信息表(通過系列和模型代碼訪問)可能會在隱藏類中更好地工作。
另一種可能更好的方法可能是使用您作爲核心類返回的信息構造代碼。
您可以使用函數'putExtra(String,Bundle)'向您的意圖發送額外信息,因此您只需編寫1個類並使用putExtra向該類發送一個字符串,以便知道要顯示哪些汽車,請參閱此處有關更多信息:http://developer.android.com/training/basics/firstapp/starting-activity.html – Navid777 2013-03-01 13:18:28
首先使這些活動更通用,不要將數據存儲在代碼中(對於只讀,您可以使用fx「x .json「文件在原始/資產或在線)......它是像你沒有花足夠的時間計劃這個應用程序......接下來不使用底部選項卡http://developer.android.com/design/patterns /pure-android.html ...記住你也可以構建HTML5應用程序 – Selvin 2013-03-01 13:18:48
我不試圖複製iOS風格或任何東西,只是當我開始項目時,我發現一個教程,其中的標籤沒有底部屏幕,並工作得很好我堅持這一點。該項目不適用於寶馬,是我必須在我的大學展示的項目,因此該應用程序甚至不會在谷歌Play商店。 – 2013-03-01 13:52:56