如何在第一个标签活动中完成处理HttpGet查询后更新当前标签活动?

时间:2011-09-10 21:35:27

标签: android android-activity tabs android-tabhost

我有两个标签应用程序。在第一个选项卡中,我执行http搜索查询,显示结果并将其插入数据库。第二个选项卡显示数据库中的数据。 如果用户在第一个选项卡中执行搜索并在搜索完成之前导航到第二个选项卡,则在搜索完成后,必须更新第二个选项卡中的数据。

我想完成搜索后的第一个标签必须告诉第二个标签有关它,在第二个标签中我应该开始新的意图。但我不知道该怎么做。请帮忙。

1 个答案:

答案 0 :(得分:0)

有多种方法可以解决这个问题,因为我只是得到了上述细节,这个建议可能是也可能不是最佳解决方案,但是这里有:

我看到它的方式,我们有以下任务来解决

  1. 您想进行HTTP调用,然后更新用户界面,即标签1
  2. 您想查询SQLite实例并在UI上显示数据, 是标签2
  3. 任何时候在标签1中调用搜索,完成后 必须更新标签2
  4. 让我评论您需要完成的3项任务

    您想要进行HTTP调用,然后更新用户界面,即标签1

    由于您将在此处进行外部呼叫,这可能需要一些时间,您最好的选择是使用AsyncTask。如果您尝试在主应用程序线程上执行HTTP调用,并且花费的时间太长,则应用程序将崩溃,因此使用AsyncTask进行调用,并根据需要更新UI。

    您可以在标签1活动的onResume()中调用AsyncTask,或将其挂在按钮上,以最适合您的方式。

    这可能会对您有所帮助:

    private class CallHTTP extends AsyncTask<String, Integer, Bitmap>
        {
            @Override
            protected void onPreExecute()
            {
                // initialise any UI stuff here
            }
    
            @Override
            protected Bitmap doInBackground(String... strings)
            {
                //actually make the HTTP call here
            }
    
            protected void onPostExecute(final Bitmap result)
            {
                //when you're done, update the UI here or fire off another activity
            }
        }
    

    onPostExecute()中,您可以为第二个标签活动创建一个意图,可能是

    Intent i = new Intent(this, MyActivity.class);
                startActivity(i);
    

    您想要查询SQLite实例并在用户界面上显示数据,即标签2

    与上面几乎完全相同,你需要一个AsyncTask来执行查询数据库的繁重(相对而言)工作,使用上述策略并在完成后更新UI。 This might help you get started on the SQLite side

    每次在标签1中调用搜索时,完成后都必须更新标签2

    如果您按照我上面给出的建议进行操作,那么每当标签1搜索完成时,您应隐式获取标签2上的更新,因为其onPostExecute()将启动活动,强制它点击onResume()您可以重置内容视图。

    我希望这能为您提供足够的信息以帮助您入门

    干杯