Articles of android fragments

当通过导航抽屉replace之前的片段到新的片段时,在新的片段中排除前面的片段响应

我有导航drawar共有12个片段..每个片段都有抽排方法。 除了位置= 1和位置= 5片段之外,每个片段都显示自己的齐射响应。 当我的应用程序启动 情况1:我打开位置1片段,打开位置5片段后,两个片段都有位置1片段响应。 情况2:如果我打开位置5的片段,打开后的位置1片段比两个片段都有位置1的片段响应。 情景1图像: 情景2图像: 我的片段交易方法类: private void showFragment(Fragment fragment) { llContainer = (LinearLayout)findViewById(R.id.container); if (fragment != null) { llContainer.removeAllViewsInLayout(); FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.container, fragment, fragment.getClass().getName()); fragmentTransaction.commit(); fragmentManager.popBackStack(); } } @Override public void onItemSelected(int position) { Fragment frag = null; switch (position) { case POS_HOME: frag […]

一个viewpager页面中有两个片段

目前,我通过FragmentPagerAdapter的每个viewpager页面使用一个片段。 但是现在我想在平板电脑的一个viewpager页面中使用两个面板视图。 例如,左侧是列表视图,右侧是gridview。 有人知道我怎么能做到这一点? 非常感谢!

无法在导航抽屉Android的片段内添加选项卡

1)我遵循Android开发人员文档中的导航抽屉示例,在这里developer.android.com/training/implementing-navigation/nav-drawer.html 并创build我的整个应用程序。 在给定的例子中,他们已经在抽屉中使用了片段,这些片段被称为具有以下代码的片段 Bundle args = new Bundle(); args.putInt("Title_Number", position); fragment.setArguments(args); FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit(); 2)现在我想在一个片段内的Tab行为,即当我在Nav-Drawer中select一个特定的项目时,加载的片段应该在顶部显示一个标签栏,就像这样。 http://flic.kr/p/hn4G3i 3)我已经按照这里给出的教程和例子 developer.android.com/training/implementing-navigation/lateral.html , 但这里给出的例子是使用FragmentActivity ,这是不符合片段(根据我的知识)。 有人可以帮助我在我的应用程序中实现这种行为。 提前致谢。

事情不要做碎片?

在Google的Fragments 开发者文档中 ,他们提到了以下内容: 为了重用Fragment UI组件,您应该将每个组件都构build为一个完全独立的模块化组件,以定义其自身的布局和行为。 一旦定义了这些可重用的片段,您可以将它们与一个Activity关联起来,并将它们与应用程序逻辑连接起来,以实现整个复合用户界面。 这听起来很不错。 但是,他们并没有详细描述: 所有片段到片段的通信都是通过关联的活动完成的。 两个碎片不应该直接沟通。 有什么我应该避免使用/调用/在我的碎片做? 我想使用Singleton会通过引入外部依赖/期望来打破可重用性? 可以从Fragment调用Log.* , SharedPreferences , Toast和AlertDialog ,还是应该避免这样做? 可以调用getActionBar()吗?或者假设托pipeActivity有一个ActionBar会是愚蠢的吗? 如果Fragment需要向用户输出一些东西,不pipe是什么错误,如果它决定如何输出这个(Log,Toast,AlertDialog等),或者它应该发送string到callback,并让主机活动决定如何/应该做什么? ListFragment需要填充数据以呈现给用户。 它应该获取数据本身(通过AsyncTask内部类中的networking请求),还是应请求托pipeActivity为其获取数据?

获取exceptionIndexOutOfBoundsException FragmentManagerImpl后分享的东西到应用程序

我刚刚分享内容到我的应用程序,只是在应用程序已经启动的情况下,我得到这个exception。 如果我直接启动应用程序,所有的东西都很好。 如果我分享了一些东西给我的应用程序,并且应用程序还没有运行,所有的东西都可以正常工作 在第一种情况下他们不工作。 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_real_debrid); LoginStore.init(getApplicationContext()); AnalyticsManager.init(getApplicationContext()); RDDownloadManager.init(this); ResponseHandlerManager.init(this); AppRater.app_launched(this, getString(R.string.app_name)); layout = findViewById(R.id.drawer_layout); supportActionBar = getSupportActionBar(); mTitle = mDrawerTitle = getTitle(); setFragment(FragmentList.findFragmentById(0).getFragment(), false); if (layout instanceof DrawerLayout) { mDrawerLayout = (DrawerLayout) layout; mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); supportActionBar.setDisplayHomeAsUpEnabled(true); supportActionBar.setHomeButtonEnabled(true); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) { public void […]

必须在添加内容之前调用ActionBarActivity requestFeature

编辑反映matias's评论 其实,原本我没有支持supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 或requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 在我的代码中,直到我注意到runtime exception when below combinations of actions happened的runtime exception when below combinations of actions happened 用户按下主页button以最小化应用程序,并尝试从最近的应用程序 ( 这是长按主页button ) 发生屏幕旋转时(注意:清单没有 configChange声明) 然后我认为在初始化过程中显示不确定的进度栏应该导致问题,所以只有我试图调用request*方法,认为它会清除它,但没有发生任何事情.. 最后我删除了showPdIndeterminate(); 为了testing。 因此,我没有在我的代码显示它。 在上述情况下仍然是一样的 我有一个基于片段的ActionBarActivity ,我的布局被包装在DrawerLayout有two framelayouts来容纳两个frgaments。 我尝试了requestFeature()之前必须调用super.onCreate添加内容错误,但仍然是例外 @Override protected void onCreate(Bundle savedInstanceState) { Log.e(TAG, "Inside OnCreate"); // supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showPdIndeterminate(); …. } 和showPdIndeterminate()是 private void showPdIndeterminate() { […]

当按下button时,找不到类android.transition.Transitionexception

我有一个活动,一次托pipe一个片段,并在两个片段之间交换。 片段A使用button启动片段B,片段B使用button或后退button启动片段A. 从片段A到B,从B到A使用自定义button,一切正常。 问题是当我使用后退button从片段B到A(片段A将事务添加到后端堆栈)。 当在片段B上按下后退button时,我得到了几个“找不到类android.transition.Transition”exception和“无法解决check-cast 1217警告,如每个11,不会崩溃程序: 我不知道这是什么意思,或者如何解决这个问题。 这就是片段A如何开始片段B: mButtonNextFragment.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FragmentManager fm = getActivity().getSupportFragmentManager(); Fragment fragment = FragmentTwo.newInstance(mCount); fragment.setTargetFragment(FragmentOne.this, 0); fm.beginTransaction() .addToBackStack("transaction1") .replace(R.id.layout_fragmentContainer, fragment) .commit(); } }); 这是片段B如何开始片段A: mButtonPrevFragment.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FragmentManager fm = getActivity().getSupportFragmentManager(); fm.beginTransaction() .replace(R.id.layout_fragmentContainer, getTargetFragment()) .commit(); } }); 这就是主机活动如何开始片段A: […]

避免从Android回收位图

我有两个asynchronous任务之一,其中一个下载图像,另一个添加模糊效果,但我的问题是,在onPostExecutecallback的下载任务我想把位图在一个ImageView中,然后传递给第二个任务运用模糊效果,但有时我得到 trying to use a recycled bitmap 我已经search了很多关于这个问题,但我没有find一个明确的解决scheme,以避免这个问题,特别是我使用这个图像在一个视图的分页器这是我的代码 protected void onPostExecute(Bitmap result) { Bitmap bitmap=result; bmImage.setImageBitmap(bitmap); if(bitmap!=null && !bitmap.isRecycled()){ Bitmap bb=bitmap; new blurTask().execute(bb);} } 这是我的完整的片段代码 public class ScreenSlidePageFragment extends Fragment { int page; String img; // ImageView blured; String[] checkblur; int size; Boolean onCreateViewCalled = false; ImageView blur; ImageView imageView; public static ScreenSlidePageFragment newInstance(int page, […]

如何使FAB避免在ViewPager中移动,但是成为片段中的一部分?

背景 根据材料devise指南( 这里 ),如果您使用一个具有FAB(浮动操作button)的ViewPager作为片段,FAB不应该作为片段的一部分移动,而是消失或被另一个replace,或者以其他方式animation。 总之,而不是这个: https://material-design.storage.googleapis.com/publish/material_v_4/material_ext_publish/0B6Okdz75tqQsNVRkV3FZMktvMWc/components-buttons-fab-behavior_06_xhdpi_009.webm 你应该做这个: https://material-design.storage.googleapis.com/publish/material_v_4/material_ext_publish/0B6Okdz75tqQsVlhxNGJCNTEzNFU/components-buttons-fab-behavior_04_xhdpi_009.webm 问题 我没有看到任何示例或教程是什么是最好的方式来执行此操作。 我的意思是,在ViewPager中为每个片段(或其中的一些片段)设置一个FAB,而每个片段都将由其片段(逻辑及其外观)控制,但FAB在滑动时不会作为片段的一部分真正移动在ViewPager中的片段之间。 即使作为示例应用程序,我也不会在任何地方看到此行为。 联系人应用程序对于这两个片段都具有相同的FAB,并且拨号程序正在移动FAB。 甚至有使用不良行为的应用程序(如Solid-Explorer)。 在YouTube上,有一个FAB(在“帐户”片段),但它在标题上,所以它可能会在那里。 这个问题 你应该如何执行正确的行为? 你真的把FAB作为活动的一部分而不是碎片吗? 有没有关于这个的教程和/或样品? 也许,当ViewPager开始滚动时,我可以分离FAB,并将其附加到活动,在滚动的同时生成animation,滚动完成后,我可以隐藏它并显示另一个片段?

Viewpager溢出协调器布局内的屏幕

我试图使用devise支持库来实现选项卡 。 问题是viewpager重叠工具栏和tablayout当我删除属性 app:layout_behavior="@string/appbar_scrolling_view_behavior" 的观点。 viewpager与工具栏和tablayout重叠 当我添加属性viewpager溢出屏幕。 viewpager溢出屏幕 我只需要viewpager占用tablayout和工具栏后留下的空间,而不是溢出屏幕… 这是我的activity_main.xml <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" > <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> <android.support.design.widget.TabLayout android:id="@+id/tablayout" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabGravity="fill" app:tabMode="fixed" /> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </android.support.design.widget.CoordinatorLayout> 这是我的fragment_1.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <TextView […]