我使用FragmentTagManager,現在我想訪問當前活動的片段並在按下後退按鈕時調用方法。獲取FragmentTagManger中後退按鈕事件的當前片段
我想要得到的片段是一個容器。因爲我在選項卡內動態地改變Fragments,所以我需要訪問容器並從它的超類中調用一個方法,並且不能直接從FragmentStack中彈出()。
如何訪問顯示在Tab中的當前Fragment?
現在我有這個
Main.java
private FragmentTabHost mTabHost;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
mTabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent);
mTabHost.addTab(
mTabHost.newTabSpec(TAB_1).setIndicator(getString(R.string.music), null),
MusicListContainerFragment.class, null);
mTabHost.addTab(
mTabHost.newTabSpec(TAB_2).setIndicator(getString(R.string.devices), null),
DeviceChooserFragment.class, null);
mTabHost.addTab(
mTabHost.newTabSpec(TAB_3).setIndicator(getString(R.string.musicplayer), null),
MusicPlayerFragment.class, null);
}
@Override
public void onBackPressed() {
System.out.println(mTabHost.getCurrentTab());
if(mTabHost.getCurrentTab() == 0){
System.out.println(getFragmentManager().findFragmentByTag(TAB_1));//NULL
System.out.println(getFragmentManager().findFragmentById(R.id.container));// NULL
}
}
Basecontainer.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
ContainerFragment
public class MusicListContainerFragment extends BaseContainerFragment {
private boolean mIsViewInited;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.base_container, null);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (!mIsViewInited) {
mIsViewInited = true;
initView();
}
}
private void initView() {
replaceFragment(new MusicListFragment(), false);
}
}