刷新/更新活动

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(),而由于我不在那个选项卡上,因此没有视图。

如何解决这个问题?任何帮助都将不胜感激。

2个回答

0
问题并不复杂,但我想要的解决方案需要进行优化。最终我选择了第二种方法,即刷新每个组件。这种方法克服了扰乱活动顺序的问题。对于Web视图,我仍然使用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 视图。

0

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

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

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


谢谢,我会尝试。 - Android
太好了,让我们知道进展如何! - alexfernandez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接