私はその親アクティビティからフラグメントメソッドを呼び出したいと思います。そのために私はフラグメントのオブジェクトが欲しい。findFragmentByTagはandroidでnullを返します
親アクティビティは、次のようでframeLayoutでフラグメントを持っている:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/bottom_buttons"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
これは、フラグメントオブジェクトを取得するためのコードです。
FragmentBottomButtons fragment = new FragmentBottomButtons();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.bottom_buttons, fragment,"FragmentTag");
//ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
//ft.addToBackStack("");
ft.commit();
/*
getSupportFragmentManager()
.beginTransaction()
.add(R.id.bottom_buttons, new FragmentBottomButtons())
.commit();
*/
frag = (FragmentBottomButtons) getSupportFragmentManager().findFragmentByTag("FragmentTag");
//fragmentBottomButtons = (FrameLayout)findViewById(R.id.bottom_buttons);
if (frag == null){
Utility.displayToast("fragmnt is null");
}
しかしnullを返しています。
誰でも私にこれを助けることができますか?何がここに間違っていますか?
は(fragmentManager.executePendingTransactionsを実行してください)。フラグメントが得られる前に、それが動作するかどうかを確認してください。 commit()は非同期に動作し、アクションが完全に完了する前に呼び出すことができます。 – aminner