2009-12-16 135 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