Articles of android fragment

ViewPager – 并不总是调用onCreateView

我有一个10页的ViewPager。 当我启动最后(第10)页onCreateView()我的片段的方法被调用。 当我滑动到第9页onCreateView()也被调用。 但是当我回到第十页onCreateView()没有被调用。 怎么了?

片段recursion进入executePendingTransactions错误

我有一个错误: 03-01 11:20:43.453: E/AndroidRuntime(31235): java.lang.RuntimeException: Error receiving broadcast Intent { act=com.qz.Blaze.ServiceStarted flg=0x10 } in com.qz.Blaze.$ServiceStartedReceiver@423540f0 03-01 11:20:43.453: E/AndroidRuntime(31235): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:766) 03-01 11:20:43.453: E/AndroidRuntime(31235): at android.os.Handler.handleCallback(Handler.java:615) 03-01 11:20:43.453: E/AndroidRuntime(31235): at android.os.Handler.dispatchMessage(Handler.java:92) 03-01 11:20:43.453: E/AndroidRuntime(31235): at android.os.Looper.loop(Looper.java:137) 03-01 11:20:43.453: E/AndroidRuntime(31235): at android.app.ActivityThread.main(ActivityThread.java:4921) 03-01 11:20:43.453: E/AndroidRuntime(31235): at java.lang.reflect.Method.invokeNative(Native Method) 03-01 11:20:43.453: E/AndroidRuntime(31235): at java.lang.reflect.Method.invoke(Method.java:511) 03-01 11:20:43.453: E/AndroidRuntime(31235): at […]

如何从主要活动调用片段方法

我有片段类的方法。 我想从主要活动调用该方法,但我不想使用FragmentById(或)FragmentByTag。 我的片段方法: public void setItemFromDrawer(String sourceTag, String destTag) { //dosomething } 如何从主要活动调用上述方法而不使用FragmentById(或)FragmentByTag?

我如何使用片段在ViewPager中放置标题?

我使用ViewPager允许用户在片段之间滑动。 我如何添加每个片段的标题到屏幕上? package com.multi.andres; import java.util.List; import java.util.Vector; import com.viewpagerindicator.TitlePageIndicator; import com.viewpagerindicator.TitleProvider; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; public class ViewPagerFragment extends FragmentActivity{ private PagerAdapter mPagerAdapter; //contiene el pager adapter private static String[] titulosPaginas = { "APP 1", "APP 2" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.lcmeter); […]

在哪里调用getChildFragmentManager()?

问题 根据Google的文档: 您现在可以将碎片embedded到碎片中。 这对于您想要将dynamic和可重用UI组件放入本身为dynamic且可重用的UI组件的各种情况很有用。 例如,如果使用ViewPager创build左右滑动并占用大部分屏幕空间的片段,则现在可以将片段插入到每个片段页面中。 要嵌套一个片段,只需在要添加片段的片段上调用getChildFragmentManager()即可。 这将返回一个FragmentManager,您可以像使用顶级活动一样使用FragmentManager来创build片段事务。 例如,下面是一些在现有的Fragment类中添加片段的代码: Fragment videoFragment = new VideoPlayerFragment(); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); transaction.add(R.id.video_fragment, videoFragment).commit(); 所以我有(例如) TestFragment ,看起来像: public class TestFragment extends Fragment { private View mFragmentView; private FrameLayout mFrameLayout; public HistoryFragment() { super(); } @Override public View onCreateView(LayoutInflater pInflater, ViewGroup pViewGroup, Bundle pBundle) { mFragmentView = pInflater.inflate(R.layout.fragment_layout, pViewGroup, false); mFrameLayout […]

片段在replace()上有默认的白色背景,而不是透明的

我在使用碎片时面临一个奇怪的问题,只是不能弄清楚。 当我在我的MainActivity容器中replace片段时,有些会保持所需的透明背景,有些会显示默认的白色背景。 我真的希望我的所有片段都是透明的,并使用分配给MainActivity的背景。 例如: 片段A:白色背景 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/image" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:paddingLeft="10dp" android:paddingRight="10dp" android:src="@drawable/logo"/> <de.mypackage.uielements.MyButton android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:text="@string/button_text"/> **<!– ListView to show news –>** <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" android:dividerHeight="1dp" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_marginBottom="10dp"/> </LinearLayout> 片段B:透明背景 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout> main.xml中 <android.support.v4.widget.DrawerLayout […]

片段是一个活动? (机器人)

片段是一个活动? 和fragment和FragmentActivity有什么区别?

FragmentPagerAdapter与OffPreenLimit设置为1的ViewPager和FragmentStatePagerAdapter之间的区别?

FragmentPagerAdapter与ViewPager与OffScreenLimit设置为1和FragmentStatePagerAdapter什么区别? 关于FragmentPagerAdapter Google的指南说: 这个版本的寻呼机最适合用于有less量通常需要寻呼的静态片段,比如一组选项卡。 用户访问的每个页面的片段将保存在内存中,尽pipe其视图层次可能在不可见时被破坏。 这可能会导致使用大量的内存,因为片段实例可以保持任意数量的状态。 对于更大的页面集,请考虑FragmentStatePagerAdapter。 而关于FragmentStatePagerAdapter : 当有大量的页面时,这个版本的寻呼机更加有用,更像是一个列表视图。 当页面对用户不可见时,它们的整个片段可能被破坏,只保留该片段的保存状态。 与FragmentPagerAdapter相比,这允许寻呼机保持与每个访问页面相关联的更less的存储器,代价是在页面之间切换时可能会有更多的开销。 我想如果我将offscreenlimit设置为1,它会销毁当前片段的下两个片段之外的所有片段,它的行为类似于FragmentStatePagerAdapter。 它是否正确?

Fragment里面的FragmentPagerAdapter

我在实现基于多个ViewPagers的devise时遇到了一些麻烦。 在高层次上,我有一个FrameLayout的FragmentActivity,因为它的内容。 我有3个不同的片段,我想要显示。 所有3个全屏幕,一次只能使用1个。 片段1是一些基本的片段与一些TextViews和ImageViews。 片段2有一个ViewPager和一个FragmentPagerAdapter,为它提供几个简单的片段。 片段3有一个ViewPager和一个FragmentPagerAdapter,为它提供几个简单的片段(与片段2不同) 在我的FragmentActivity onCreate()我得到的FragmentManager和开始一个事务,以取代我的FrameLayout中的一个新的片段2实例。 在这一点上,一切都按预期工作。 我的ViewPager在片段2完美地工作。 现在我有一个菜单选项,用Fragment 3的新实例replace我的FrameLayout中的Fragment 2。 当我尝试用另一个replace事务将Fragment 2放回到FrameLayout中时,问题就出现了。 我看到我的PagerIndicater在顶部,但我的网页是空白的。 我试着创build一个新的我的Fragment 2的实例,并调用一个replace事务。 当我调用replace和在replace之前添加findFragmentByTag检查而不是创build新实例时,我也尝试在我的碎片上设置一个标记。 在我第二次replace之后,两者都给了我相同的空白页的结果。 供参考我的第一个devise只是一个ViewPager和ViewIndicater的FragmentActivity。 我只有我的描述上面的片段2和片段3和一个菜单选项来切换它们。 要切换我有2个不同的FragmentPagerAdapters定义,只是称为ViewPager.setAdapter设置选定的FragmentPagerAdapter。 这是完美的工作,但现在我需要一个新的顶级片段,根本不使用ViewPager。 这就是为什么我决定把我的ViewPage移动到他们自己的片段中。 我的想法是,我只是交换我的片段到FrameLayout。 我现在没有我的代码在我面前,所以我不能发布任何,但我会明天添加一些代码到我的问题,以帮助促进答案。

在ViewPager中replace片段显示空白屏幕?

我有很多麻烦让碎片与标签/刷卡工作。 我有一个活动和两个片段,其中有一个ListView。 我想要的是当我从片段1滑动到与ListView的片段,刷新ListView或者如果可能的话重新创build第二个片段…. 我现在正在尝试使用FragmentTransaction.replace()像这样: public void onTabSelected(Tab arg0, android.app.FragmentTransaction arg1) { // TODO Auto-generated method stub Fragment frag = new FragmentTwo(); FragmentTransaction trans = getSupportFragmentManager().beginTransaction(); if (arg0.getPosition() == 1) { trans.replace(R.id.pager, frag); trans.addToBackStack(null); trans.commit(); } } 所以我认为,当我滑动到标签2,这是与ListView的一个,它会取而代之的是一个新的,它创build的。 实际发生的事情是,当我滑动到标签2,它重新创build与ListView的片段(我知道,因为我有一个对话框在屏幕上显示的onCreateView),但片段/选项卡是空白/黑色。 我究竟做错了什么? 这个创build的片段去哪了? 我不知道这些片段的代码是否相关,但请告诉我是否应该发布,我可以这样做。 这是我的PagerAdapter类。 public class TabsPagerAdapter extends FragmentPagerAdapter { public TabsPagerAdapter(FragmentManager fm) { super(fm); } @Override […]