安卓碎片切换

3

现在我正在使用片段来制作应用程序。 有一个包含四个片段fragment A、fragment B、fragment C和Fragment D的片段活动。 默认情况下,片段A将被选择,点击选项卡后,可以切换到片段B、C、D或A。

我的问题是,我想在片段A中检查一个条件,并根据结果切换到片段B。

Intent in=new Intent(src,destination);
startactivity(in)

我希望在不点击选项卡按钮的情况下切换到其他片段。以下是我用于添加片段的代码。我想根据一个条件检查,该条件取决于该条件的片段a、片段b将被选择。

 ActionBar bar = getSupportActionBar();
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    ActionBar.Tab tab1 = bar.newTab();
    ActionBar.Tab tab2 = bar.newTab();
    tab1.setText("Fragment A");
    tab2.setText("Fragment B");
    tab1.setTabListener(new MyTabListener());
    tab2.setTabListener(new MyTabListener());
    bar.addTab(tab1);
    bar.addTab(tab2);

请帮助我,朋友们。


你是否在使用 FragmentPagerAdapter 将 Fragment 添加到 Activity 中? - vikki
@vikki... 我使用了以下代码。。。 ActionBar bar = getSupportActionBar(); bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); ActionBar.Tab tab1 = bar.newTab(); ActionBar.Tab tab2 = bar.newTab(); tab1.setText("Fragment A"); tab2.setText("Fragment B"); tab1.setTabListener(new MyTabListener()); tab2.setTabListener(new MyTabListener()); bar.addTab(tab1); bar.addTab(tab2); - sarath
2个回答

2

碎片(Fragments)的使用相对较为复杂,因此您需要了解它们。以下是我的做法:

FragmentManager:

public class FragmentsUtils {
private static String DIALOG_TAG = "dialog_tag";

/*public static MyAlertDialogFragment showDialog(FragmentManager fragmentManager, int id) {
    // DialogFragment.show() will take care of adding the fragment
    // in a transaction.  We also want to remove any currently showing
    // dialog, so make our own transaction and take care of that here.
    FragmentTransaction ft = fragmentManager.beginTransaction();
    Fragment prev = fragmentManager.findFragmentByTag(DIALOG_TAG);
    if (prev != null) {
        ft.remove(prev);
    }

    //      ft.addToBackStack(null);

    // Create and show the dialog.
    MyAlertDialogFragment newFragment = MyAlertDialogFragment.newInstance(id);
    newFragment.show(ft, DIALOG_TAG);
    return newFragment;
}*/

public static void swapFragments(FragmentManager fragmentManager, int containerViewId, Fragment newFragment, String fragmentTag)    {

    if (fragmentManager == null)
        return;
    View newFragmentMainView = newFragment.getView();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    //      fragmentTransaction.replace(containerViewId, fragment);

    if(fragmentTag == null || fragmentTag.length() < 1)
        fragmentTransaction.add(containerViewId, newFragment);
    else
        fragmentTransaction.add(containerViewId, newFragment, fragmentTag);

    fragmentTransaction.addToBackStack(null);
    fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    fragmentTransaction.commit();
}

public static void swapFragments(FragmentManager fragmentManager, int containerViewId, Fragment newFragment)    {
    swapFragments(fragmentManager, containerViewId, newFragment, null);
}

以下是如何使用它的方法:

     WebViewDetailsActivity webViewDetailsActivity = new WebViewDetailsActivity();
     Bundle args = new Bundle();
     args.putString("url", tempRestModel.ClickTableUrl);   webViewDetailsActivity.setArguments(args); 

FragmentsUtils.swapFragments(getBaseFragmentManager(), R.id.realtabcontent, webViewDetailsActivity, Consts.TAB_REC);

2

如果通过选择选项卡可以切换到某个片段,例如选择tab1将显示Fragment A,那么您只需要选择该选项卡即可。例如,您当前正在查看Fragment B并需要检查某些条件,以确定是否要切换到Fragment AC

ActionBar bar = getSupportActionBar();
if(condition){
    bar.setSelectedNavigationItem(1); //where 1 is the position of tab1
}else{
    bar.setSelectedNavigationItem(3); //for tab3
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接