Android显示搜索结果的方法

标签 android load

我想在屏幕上显示搜索结果,我是这样实现的。

用户在搜索表单中填写“搜索字段”和“搜索位置”,我将值设置到 bean 中,该 bean 是静态的,因此我可以从任何地方访问它。

然后我使用

开始搜索结果屏幕 Intent
Intent mainIntent = new Intent(SearchVenueResults.this, SearchResults.class);
startActivity(mainIntent);

在“SearchResults” Activity 的“oncreate”方法中,我代表静态 bean 加载数据,这些值从搜索表单中填充,然后显示数据。

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

我的问题是它是正确的使用方法还是在 Android 中有另一种更好的方法?

感谢任何快速的想法或快速的代码。

最佳答案

一般来说,结果屏幕 Activity 的 onCreate 处理程序绝对是执行此操作的好地方。但是,阅读您问题的字里行间,我注意到至少有两件事可能会导致问题:

首先,使用静态对象将值从一个 Activity 传输到另一个 Activity 绝对是错误的做法。这是因为一方面,Android 中已经有一个定义明确的机制用于在上下文之间交换数据,这是通过 Bundles 实现的。和 Intents .因此,要告诉您的结果 Activity 您的用户正在搜索的内容,请执行以下操作:

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

在您的 SearchResults Activity 中,在 onCreate 中执行此操作:

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

此外,Android 的行为在静态变量的生命周期方面几乎不可预测。我多次注意到,在 Activity 类中维护静态变量不能保证在启动新 Activity 时该变量仍然有效,因此您永远不应依赖静态作为类之间交换数据的方式.

其次,您绝对不想实现 loadDataAndSetupUI 以同步运行。这样做会锁定您的用户界面,直到搜索终止,Android 甚至可能决定终止您的应用程序。使用 AsyncTask代替后台作业。

关于Android显示搜索结果的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1912478/

相关文章:

Android:如果 ImageView 按矩阵缩放,如何检测 ImageView 上的触摸位置?

android - 设置和使用 Gherkin Android Studio

android - Gradle:任务 ':MyApp:dexDebug' 执行失败。 > 无法在任务 ':MyApp:dexDebug' 上调用 IncrementalTask​​.taskAction()

javascript - 设置间隔不起作用?

android - Xamarin(.Forms) 是否适合我的项目?

android - 仅在 gradle 的 Debug模式下使用一组类和资源

Jquery .load() 使用表单中的数据

swift - 如何在没有内存警告的情况下快速从Web服务加载图像

jquery - 将图像添加到 dom 并执行 .load

jquery - 在点击函数中使用appendTo和Load