刷新/更新活动

时间:2012-11-22 09:41:44

标签: android android-activity

我需要刷新我的活动。我有一堆问题重新制作相同的建议我完成当前活动并重新启动当前活动。或者再次为每个小部件提供价值。为了避免过渡,我使用了这段代码

Intent intent = getIntent();
overridePendingTransition(0, 0);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
this.finish();

overridePendingTransition(0, 0);
startActivity(intent);

但在我的情况下,在我的活动中,我有四个标签,我需要刷新所有四个标签。

关于同样的问题,还有一些问题 1)使用上面的代码,如果我在其他屏幕上,当上面的代码运行时,我会回到这个屏幕。

2)活动序列受到干扰。

3)维护选定的选项卡也是问题的一部分

即使我尝试刷新每个标签seperatley,我的一个标签也有webview。如何刷新,因为除非有视图,否则无法调用webview.loadData(),因为我不在该选项卡上,所以没有视图。

解决这个问题的理想方法是什么。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

这取决于您的用例。您可以再次setContentView()以使布局每次都膨胀。如果您只是显示列表,那么您可以调用适配器来显示列表。您必须为TabActivity中的每个片段执行此操作。

要重新加载WebView,我只需再次调用loadUrl()

至于记住所选标签,您必须store it,然后在TabHost中设置当前标签。

答案 1 :(得分:0)

问题并不复杂,但我想要的解决方案需要优化。最后我采取了第二种方式,即刷新每个组件。该方法克服了扰乱活动顺序的问题。对于网络视图,我仍在使用webView.loadData(...)

总的来说,我分别对每个标签进行了处理。如果我包含我的整个代码,那么它将变得笨拙,但仍然试图合并尽可能多的重要功能。

在我的活动课中,当我需要刷新我的活动时,我调用了这个方法。

private void onRefrash()
{   
    refreshCurrentActivity();

    int selectedTab = getActionBar().getSelectedNavigationIndex();
    switch (selectedTab)
    {
    case TAB1:
        fragment1.update();
        break;
    case TAB2:
        fragment2.update();
        break;
    case TAB3:
        fragment3.update();
        break;
    }       
Toast.makeText(this, getString(R.string.msg_case_updates_received), Toast.LENGTH_LONG).show();  
    }                       
}

每个片段都是先前初始化的,并且为我更新相应Web视图的每个选项卡调用update方法。