2

アクティビティからフラグメント メソッドを呼び出したいのですが、この SO の質問のように記述します: FindByID

TestFragment testFrag = (TestFragment) getFragmentManager().getFragmentById(R.id.testfragment);

if(testFrag != null && testFrag.isAdded())
    testFrag.testMethod("Test");

ご覧のとおり、xml に設定されている ID でフラグメントを識別します。私はフラグメント コンテナしか持っていないので、どのフラグメント レイアウトにも ID はありません。

したがって、私の秒の考えは、タグgetFragmentByTagのように関数を使用することでした

fragmentTransaction.replace(R.id.frameTitle, casinodetailFragment, "fragmentTag");
  • しかし、タブ付きのアクションバーを使用しているため、タグはありません:

私の活動:

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_fragmentcontainer);

  // ActionBar gets initiated
  ActionBar actionbar = getActionBar();
  actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

  // Define Tabs
  ActionBar.Tab BasicInfoTab = actionbar.newTab().setText(
      R.string.tab_BaseInfo);
  ..

  // Define Fragments
  PlantBasicInfoFragment BasicInfoFragment = new PlantBasicInfoFragment();
  ..

  // Set TabListeners
  BasicInfoTab.setTabListener(new TabListener(BasicInfoFragment));
  ..

  // Add tabs to Actionbar
  actionbar.addTab(BasicInfoTab);
  ..

  // Icon clickable
  actionbar.setDisplayHomeAsUpEnabled(true);
}

とそのレイアウト:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center">

      <LinearLayout 
          android:orientation="horizontal"
          android:id="@+id/LabeledObjectHeaderInfo"
          android:layout_width="match_parent"
          android:layout_height="wrap_content" 
          >


        <!-- ... -->

   </LinearLayout > 


      <!-- fragment container -->
   <LinearLayout
          android:orientation="horizontal"
          android:id="@+id/fragment_container"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          >
   </LinearLayout>

</LinearLayout>

私の断片の1つ:

<?xml version="1.0" encoding="utf-8"?>

    <TableLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:id="@+id/table">

        <TableRow>
          <!-- ... -->
        </TableRow>

        <!-- ... -->


  </TableLayout>

そして最後に私のタブリスナー

public class TabListener implements ActionBar.TabListener {

  public Fragment fragment;

  public TabListener(Fragment fragment) {
    this.fragment = fragment;
  }


  @Override
  public void onTabReselected(Tab tab, FragmentTransaction ft) {

  }

  @Override
  public void onTabSelected(Tab tab, FragmentTransaction ft) {

    ft.replace(R.id.fragment_container, fragment);
  }

  @Override
  public void onTabUnselected(Tab tab, FragmentTransaction ft) {

    ft.remove(fragment);

  }

}

では、現在のフラグメントを特定するにはどうすればよいでしょうか?

前もって感謝します

PS タブの切り替え全体は完全に機能しますが、アクティビティ内に追加機能を構築したいと思います!

4

2 に答える 2