我正在开发一个 Android 应用程序,我想为每个选项卡实现一个活动组。但由于 Activity Group 已被弃用,我必须使用 Fragments。我最近几天在谷歌上搜索并对该主题进行了一些研究,但我仍然不明白。下图描述了我想要做的事情。此外,我直接来自 iOS,我需要一些关于我的理论的反馈。
如您所见,每个 Fragment 都由一个 WebView Fragment 组成。当用户单击该 WebView 片段中的链接时 - 请求被捕获并替换一个新片段,该片段再次保存一个 WebView 并加载在前一个片段中单击的链接。在某一时刻,用户决定返回第一个 Fragment 并按下返回按钮。
碎片应该以相反的顺序从堆栈中弹出,直到他再次看到第一个。理想情况下,每个 Fragment 都应该保存他的实例状态,这样当用户返回时,WebView 不需要再次加载站点。
我遇到了 ActionBar Sherlock,它提供了有关 Fragments Tabs 的示例。还有一个片段堆栈的示例。将这两个示例结合起来是理想的,这样每个选项卡都包含一个 Fragment Stack。
我的代码结构如下所示:
我的 TabHost 片段
public class MyActivity extends SherlockFragmentActivity {
static TabHost mTabHost;
static TabManager mTabManager;
public static int THEME = R.style.Theme_Sherlock_Light;
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(THEME); //Used for theme switching in samples
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_tabs);
mTabHost = (TabHost)findViewById(android.R.id.tabhost);
mTabHost.setup();
mTabManager = new TabManager(this, mTabHost, R.id.myRealTabContent);
// adding some Fragment Tabs
mTabManager.addTab(mTabHost.newTabSpec(tabNames[i]).setIndicator(tabNames[i]),
FragmentStackSupport.CountingFragment.class, bundle);
if (savedInstanceState != null) {
mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab"));
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("tab", mTabHost.getCurrentTabTag());
}
// defining the Tab Manager
每个选项卡的片段堆栈应该是什么样子?目前我有一个片段活动,每个选项卡内都有一个片段。但我没有达到我需要的逻辑。
这是我的代码:My Fragment with WebView inside
我会很高兴获得一些反馈和提示(或者网络上有任何示例吗?)。我对内存也有一些担忧——当用户点击和点击时,内存必须保存堆栈中的每个片段。
干杯。