选项卡,android – 选项卡式操作栏内的片段导航"/>
android导航选项卡,android – 选项卡式操作栏内的片段导航
问题
在我描述我当前的设置之前,我将描述我的问题.我需要在单独的标签内的片段之间进行分层导航.假设我在选项卡中向下钻取,我然后切换选项卡,然后返回到第一个原始选项卡,我需要它在钻取的下层,然后能够返回到顶层标签.
现在进入我的设置.
我有一个名为MainActivity的活动的应用程序.此活动控制我的选项卡式操作栏.我选择了一个选项卡时,我已经按照许多不同的教程来处理片段的切换,下面的代码可以引起您对onTabSelected和onTabUnselected方法的注意.
MainActivity – 标签监听器
public static class MyTabListener implements ActionBar.TabListener {
private final Activity mActivity;
private final String mTag;
private final Class mClass;
private final Bundle mArgs;
private Fragment mFragment;
public MyTabListener(Activity activity,String tag,Class clz) {
this(activity,tag,clz,null);
}
public MyTabListener(Activity activity,Class clz,Bundle args) {
mActivity = activity;
mTag = tag;
mClass = clz;
mArgs = args;
// Check to see if we already have a fragment for this tab,probably
// from a previously saved state. If so,deactivate it,because our
// initial state is that a tab isn't shown.
mFragment = mActivity.getFragmentManager().findFragmentByTag(mTag);
if (mFragment != null && !mFragment.isDetached()) {
FragmentTransaction ft = mActivity.getFragmentManager().beginTransaction();
ft.detach(mFragment);
ftmit();
}
}
public void onTabSelected(Tab tab,FragmentTransaction ft) {
Log.e("FRAGMENT","Selected Fragment With Tag " + mTag);
if (mFragment == null) {
mFragment = Fragment.instantiate(mActivity,mClass.getName(),mArgs);
ft.add(android.R.id.content,mFragment,mTag);
} else {
ft.attach(mFragment);
}
}
public void onTabUnselected(Tab tab,FragmentTransaction ft) {
if (mFragment != null) {
ft.detach(mFragment);
}
}
public void onTabReselected(Tab tab,FragmentTransaction ft) {
Toast.makeText(mActivity,"Reselected!",Toast.LENGTH_SHORT).show();
}
}
当我在Tab1上查看Fragment1’时,当按下一个按钮时,我会显示另一个我需要能够返回的FragmentcalledFragment2`.下面的代码可以工作,如果我只是停留在该选项卡上,但是当从选项卡导航并返回到它时,一切都搞砸了.
MainActivity – 显示第二个片段
Fragment tdFrag = Fragment.instantiate(this,SecondFragment.class.getName());
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(android.R.id.content,tdFrag,"secondfrag");
ft.addToBackStack(null);
ftmit();
我的想法
我认为这必须是我分离片段并在按下新标签时处理切换的方式.也许我需要为每个选项卡实现一些存储每个单独的backstack并从中加载片段而不是系统后端堆栈的方法?
任何帮助都会很棒.我试图尽可能彻底和简单地解释它.
提前致谢.
更多推荐
android导航选项卡,android – 选项卡式操作栏内的片段导航
发布评论