【问题标题】:Android display search results approachAndroid显示搜索结果的方法
【发布时间】:2009-12-16 05:20:45
【问题描述】:

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

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

然后我开始使用搜索结果屏幕意图

Intent mainIntent = new Intent(SearchVenueResults.this, SearchResults.class);
startActivity(mainIntent);

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

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

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

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

【问题讨论】:

    标签: android load


    【解决方案1】:

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

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

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

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

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

    此外,就静态变量的生命周期而言,Android 的行为几乎无法预测。我多次注意到,在活动类中维护一个静态变量并保证这个变量在启动一个新活动时仍然有效,所以你永远不应该依赖静态作为类之间交换数据的手段.

    其次,你绝对不想实现loadDataAndSetupUI 来同步运行。这样做会锁定你的 UI,直到搜索终止,Android 甚至可能决定终止你的应用程序。将AsyncTask 用于后台作业。

    【讨论】:

      猜你喜欢
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-26
      • 2021-01-25
      • 2023-04-07
      相关资源
      最近更新 更多