0

2つのタブがある画面があり、タブごとに異なるレイアウトで異なるフラグメントを実行しようとしています。

私は現在次のものを持っています:

  • MainFragmentActivity-FragmentActivityを拡張するアクティビティ
  • mainFraggment_screen-MaiFragmentActivityのXML
  • Fragment1-ユーザーがTab1をクリックしたときのアクティビティ
  • fragmnet1_screen-そのためのXML
  • Fragment2-ユーザーがTab2をクリックしたときのアクティビティ
  • visual2_screen-そのためのXML

すべてが機能していますが、問題は、アプリケーションがTab1タブとTab2タブのある空の画面で起動した場合です。たとえば、特定のアクティビティのフラグメントは、ユーザーがTab2をクリックした場合にのみ表示されます。そして、彼がTab1をクリックして戻ると、Tab1のフラグメントが正常に表示されます。

Tab1のフラグメントは、アプリケーションの起動時にすぐに開始したいのですが、その方法がわかりません。

何か案は?:D

4

2 に答える 2

2

フラグメントトランザクションの問題のようです。しかし、MainActivityのコードを確認する必要があります。

FragmentTransactions.addとFragmentTransaction.replaceを使用して、それらを出し入れしていると想定しています。

于 2012-11-24T16:48:16.657 に答える
0

解決策は、すべてのタブを追加した後です。これは、onCreate()で実行する必要があります。

TabInfo activeTab = (TabInfo) this.hashMapTab.get("Tab1");
    FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction();
    activeTab.fragment = Fragment.instantiate(this,activeTab.className.getName(), activeTab.args);
    ft.add(R.id.tab1, activeTab.fragment, activeTab.tag);
    ft.attach(activeTab.fragment);
    lastTab = activeTab;
    ft.commit();

hashMapTabは、すべてのタブのTabInfoのハッシュマップです。TabInfoは、タブのクラス名やタグなど、すべてのタブデータのコンテナです。

于 2012-11-26T08:09:25.517 に答える