各タブにアクティビティ グループを実装したい Android アプリに取り組んでいます。しかし、Activity Group は廃止されたため、Fragments を使用する必要があります。私は最後の日をグーグルで検索し、そのトピックについていくつかの調査を行いましたが、まだわかりません. 下の図は、私がやりたいことを説明しています。また、私は iOS から直接来ているので、自分の理論についてフィードバックが必要です。
ご覧のとおり、すべてのフラグメントは WebView フラグメントで構成されています。ユーザーがその WebView Fragment 内のリンクをクリックすると、リクエストがキャッチされ、新しい Fragment が置き換えられます。これは、WebView を再び保持し、前の Fragment でクリックされたリンクをロードします。ある時点で、ユーザーは最初の Fragment に戻ることを決定し、戻るボタンを押します。
Fragments は、最初のフラグメントが再び表示されるまで、逆の順序でスタックからポップ オフする必要があります。理想的には、各 Fragment はインスタンスの状態を保存する必要があります。これにより、ユーザーが戻ったときに WebView がサイトを再度読み込む必要がなくなります。
Fragments Tabsに関する例を提供するActionBar Sherlockに出くわしました。フラグメント スタックの例もあります。これら 2 つの例を組み合わせて、各タブがフラグメント スタックで構成されるようにするのが理想的です。
私のコード構造は次のようになります。
私の 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
各タブのフラグメント スタックはどのようになりますか? 現在、各タブ内に Fragment を持つ Fragment アクティビティがあります。しかし、私は必要なロジックを達成していません。
ここに私のコードがあります:内部に WebView を含む私のフラグメント
フィードバックやヒントをいただければ幸いです (または、ウェブ上に例はありますか?)。また、メモリについても懸念があります-ユーザーがクリックしてクリックしてクリックし、メモリがスタック内の各フラグメントを保持する必要がある場合。
乾杯。