相关疑难解决方法(0)

如何使用嵌套片段在AndroidPager中添加片段(Android 4.2)

我有ViewPager三个Fragments,每个显示一个List(或Grid).

在新的Android API level 17(Jelly Bean 4.2)中,其中一个功能是嵌套片段.新功能描述说:

如果您使用ViewPager创建左右滑动并占用大部分屏幕空间的片段,则现在可以将片段插入到每个片段页面中.

所以,如果我理解正确的话,现在我可以在里面创建一个ViewPagerwith Fragments(里面有一个按钮),当用户按下按钮时显示另一个Fragment没有松动ViewPager使用这个新功能.

我已经花了我的早上尝试实现这几种不同的方式,但我不能让它工作......有人可以添加一个如何实现这个的简单示例吗?

PS:我只对这种方式感兴趣,getChildFragmentManager学习如何运作.

android android-fragments android-viewpager android-support-library android-nested-fragment

55
推荐指数
3
解决办法
6万
查看次数

递归进入executePendingTransactions

我有一个MainDrawer to Fragment活动,它有一个导航抽屉的布局我和我的主要内容,我可以在其中加载新的碎片.我加载的一个片段是calle StatisticsTab Fragment.这个Fragment包含一个tabhost,每个tab都是它自己的listview项的片段.一旦我点击ListView项目,它加载另一个新的片段,我不再在tabHost中,我尝试使用导航器返回到我的StatisticsTab片段,我收到此错误:

03-03 10:32:06.884  24185-24185/com.beerportfolio.beerportfoliopro E/AndroidRuntime? FATAL EXCEPTION: main
    java.lang.IllegalStateException: Recursive entry to executePendingTransactions
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1439)
            at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
            at android.support.v4.app.FragmentTabHost.onAttachedToWindow(FragmentTabHost.java:283)
            at android.view.View.dispatchAttachedToWindow(View.java:12307)
            at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2457)
            at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2464)
            at android.view.ViewGroup.addViewInner(ViewGroup.java:3567)
            at android.view.ViewGroup.addView(ViewGroup.java:3399)
            at android.view.ViewGroup.addView(ViewGroup.java:3344)
            at android.view.ViewGroup.addView(ViewGroup.java:3320)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:938)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
            at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
            at android.os.Handler.handleCallback(Handler.java:730)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:158)
            at android.app.ActivityThread.main(ActivityThread.java:5789)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:843)
            at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

如果我没有在StatisticsTab片段上点击我的任何标签,并通过navdrawer导航到另一个片段,然后返回StatisticsTab,那么它就不会FC上.也就是说,当我回到它们时,NavDrawer中的其他任何片段都没有关闭,只有带有标签的片段.

MainDrawer2:

public class MainDrawer2 extends FragmentActivity
{
    private static final String EXTRA_NAV_ITEM …
Run Code Online (Sandbox Code Playgroud)

android android-listview android-fragments forceclose

23
推荐指数
1
解决办法
3万
查看次数

Android Honeycomb:如何更改FrameLayout中的碎片,而无需重新创建它们?

是否可以在片段之间切换而无需一直重新创建片段?如果是这样,怎么样?

在文档中,我找到了如何替换Fragments的示例.

// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();

// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);

// Commit the transaction
transaction.commit();
Run Code Online (Sandbox Code Playgroud)

但我不希望每次需要时都从头开始创建我的碎片.

我还发现了这个 隐藏/显示片段的例子:

// The content view embeds two fragments; now retrieve them and attach
// their "hide" button.
FragmentManager fm = getFragmentManager();
addShowHideListener(R.id.frag1hide, fm.findFragmentById(R.id.fragment1));
addShowHideListener(R.id.frag2hide, fm.findFragmentById(R.id.fragment2));
Run Code Online (Sandbox Code Playgroud)

但是,如何在XML文件外部创建一个带有ID的片段?

我认为这可能与这个问题有关,但没有答案.:/ …

android android-fragments android-3.0-honeycomb

14
推荐指数
1
解决办法
2万
查看次数