我制作了一个小应用程序,它具有三个选项卡以显示三个不同的网页。它确实有效,但我有点担心我对整个事情的工作方式没有足够的控制权。当我单击一个选项卡时,我会加载一个网页(请参见下面的代码示例),现在当我单击另一个选项卡时,另一个页面会在另一个 View 中加载。当我回到第一个选项卡时,整个事情再次初始化并加载页面。有没有一种方法可以控制它,并根据需要将底层选项卡的 Activity 保持在当前状态(并在页面更改时只说“刷新”页面)。
我是否需要为此处理 onPause()/onResume() 方法,或者将我的选项卡实现为单个 Activity 的 View (这可能吗?)?如何存储 Activity 的状态以避免每次都重新初始化它?
这是如何将 Activity 挂接到选项卡上的:
intent = new Intent().setClass(this, tab_schedule.class);
spec = tabHost.newTabSpec("Schedule").setIndicator("Schedule",
res.getDrawable(R.drawable.tab_icon_schedule)).setContent(
intent);
tabHost.addTab(spec);
tab_schedule.class 做一个简单的网页加载:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_people);
try {
WebView currentView = (WebView) findViewById(R.id.tab_people_WebView);
currentView.getSettings().setJavaScriptEnabled(true);
currentView.loadUrl("http://pda.lenta.ru");
} catch (Exception e) {
Log.v("webClientInit", e.getMessage());
}
}
最佳答案
如果您不想为每个选项卡创建一个新 Activity ,您可以使用 TabWidget使用 FrameLayout 在 View 之间切换。
关于切换 Activity ,请参阅此 question一种不每次都重新创建 Activity 的方法。
无论如何,您应该始终实现 onPause 和 onResume 来恢复应用的状态。您可能想阅读 Activity Lifecycle ,但基本上你不能阻止你的 Activity 在进入后台时被杀死。因此,您应该将状态存储在 onPause 中。上面的链接也有一些关于如何这样做的信息。
关于Android 选项卡 - 避免在选项卡点击时重新创建 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3561736/