2009-12-16 134 views
1

我想在屏幕上顯示搜索結果,我已經以這種方式實現了。Android顯示搜索結果的方法

從搜索表單用戶填充'搜索字段'和'搜索位置'我將值設置爲bean,該bean是靜態的,這樣我就可以從每個地方訪問它。

然後我開始搜索結果畫面意圖使用

Intent mainIntent = new Intent(SearchVenueResults.this, SearchResults.class); 
startActivity(mainIntent); 
上的「SearchResult所」活動「的OnCreate」方法我加載靜態bean的代表,其值從搜索表單填充,然後顯示數據的數據

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     loadDataAndSetupUI(); 
     super.onCreate(savedInstanceState); 
    } 

我的問題是它是正確的方法來使用它或在Android中有另一種更好的方法?

任何快速的想法或快速代碼表示讚賞。

回答

2

那麼,一般來說,結果屏幕活動的onCreate處理程序絕對是一個很好的選擇。然而,在你的問題的行之間閱讀,至少有兩件事我注意到這可能會導致問題:

首先,使用靜態對象將值從一個活動傳輸到另一個絕對是錯誤的方法。這是因爲,Android中已經有了一個用於在上下文之間交換數據的明確機制,並且這是通過BundlesIntents。因此,講述的事情你的用戶正在搜索的結果的活動,做這樣的事情:

Intent mainIntent = new Intent(SearchVenueResults.this, SearchResults.class); 
mainIntent.putExtra("search_query", getValueFromSearchBox()); 
startActivity(mainIntent); 

在你的SearchResult所活動,在的onCreate做到這一點:

public void onCreate(Bundle savedInstanceState) { 
    String searchQuery = getIntent().getExtras().getStringExtra("search_query"); 
    loadDataAndSetupUI(searchQuery); 
    super.onCreate(savedInstanceState); 
} 

此外,Android的表現相當就靜態變量的生命週期而言,這是非常不可預測的。我注意到有幾次在活動類中保持一個靜態變量,而不是保證這個變量在啓動一個新活動時仍然有效,所以你不應該依賴靜態作爲在類之間交換數據的一種方式。

其次,你絕對不想實現loadDataAndSetupUI同步運行。這樣做會鎖定你的用戶界面,直到搜索結束,Android甚至可能決定殺死你的應用程序。改用後臺作業使用AsyncTask

+0

感謝朋友非常好的解決方案。 – 2009-12-17 04:58:07