3

我需要刷新我的活动。我有一堆问题正在重新评分,这些问题建议我完成当前活动并重新开始当前活动。或者再次为每个小部件提供价值。为避免过渡,我使用了此代码

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

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

但就我而言,在我的活动中,我有四个选项卡,我需要刷新所有四个选项卡。

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

2) 活动顺序受到干扰。

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

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

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

4

2 回答 2

0

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

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

至于记住选定的选项卡,您必须存储它,然后在TabHost中设置当前选项卡。

于 2012-11-22T11:06:38.243 回答
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 方法。

于 2012-12-05T09:14:37.773 回答