Articles of android fragments

两个面板UI与片段vs独立的活动

我正在启动一个Honeycomb应用程序,该应用程序将具有基本的两个面板布局,左侧为面板菜单,右侧为每个部分的主要function。 与Fragments API的可用样本相反,右侧面板上显示的内容包含针对每个菜单选项的完全不同的UI。 根据所select的部分来replace正确的片段是诱人的,但是这意味着在整个应用中只使用一个活动,这听起来不太好。 此外,片段的生命周期与活动相关联,因此在活动被杀死之前不会有片段被杀死,导致大量片段“活着”。 然而,每个菜单选项有两个面板的不同活动意味着用于菜单的片段将不得不在每个活动中添加,并且将在所有应该有菜单的部分中受到不一致布局的影响。 这里最好的做法是什么?

使用Robotium检查片段的存在 – Android

有没有人知道一种方法来检查使用Robotium的片段的存在? 问候Rc

仅在一个ActionBar选项卡内的片段之间的事务

我有一个应用程序与三个选项卡(ActionBar选项卡),每一个一个片段一次。 TabListener TabsActivity Tab1 – > ListFragment1 – > ListFragment2 – > Fragment3 Tab2 – > Tab2Fragment Tab3 – > Tab3Fragment 问题是当我从ListFragment1创buildFragmentTransaction(在OnListItemClicked内)到ListFragment2,其他选项卡内的片段也更改为ListFragment2。 最后,我想只在选项卡中更改片段,并保留其他选项卡的状态。 我已经保存了状态(OnSavedInstance())。 你知道我在这里失踪了吗? 一些代码: public class TabsActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tabs); // setup Action Bar for tabs ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // instantiate fragment for […]

如何在android中实现显示和隐藏片段

如何在Android中实现显示和隐藏片段? 我在活动中添加了两个片段。 一个包含菜单和一个片段的片段包含子菜单。 我有很多菜单片段中的button像家,想法等,如果我点击想法button。 我必须显示子菜单。 如果我再次点击想法button,我必须隐藏子菜单。 任何人都可以提供例子,或如何访问另一个片段中的一个视图片段? 这是我的布局主要 ?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" > <fragment class="com.gcm.fragment.CommonFragment" android:id="@+id/the_frag" android:layout_width="wrap_content" android:layout_height="match_parent" /> <fragment class="com.gcm.fragment.SubFragment" android:id="@+id/the_frag1" android:layout_marginTop="130dip" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 在我的片段 package com.gcm.fragment; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.TextView; public class CommonFragment […]

使用xml布局dynamic添加片段到GridLayout是不行的

在我们的应用程序中,我们试图dynamic添加片段到GridLayout。 XML格式的空网格布局与片段的布局一样。 在运行时,我们检查一些数据,并从中确定要添加到布局的片段数量以及每个片段使用哪个布局。 当我们有片段为其生成的视图分配一个大小的时候,它是全部工作的,但是如果我们在片段的布局文件中指定了大小,则在网格布局中什么都不显示。 显然,我们可以在创build视图时简单地指定大小,但是我们更愿意在碎片的xml布局中进行,因为这样可以让我们利用Android的内置系统为每个设备select正确的布局。 我正在使用支持库碎片。 如果这有所作为,我不使用支持库GridLayout 相关的代码和XML如下: GridLayout XML: <?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android"> <ScrollView android:id="@+id/grid_scroll" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/bottom_fragment" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginRight="8dp" android:layout_marginTop="?android:attr/actionBarSize" android:overScrollMode="ifContentScrolls" > <GridLayout android:id="@+id/grid" android:layout_width="match_parent" android:layout_height="wrap_content" android:alignmentMode="alignMargins" android:animateLayoutChanges="true" android:columnCount="3" android:columnOrderPreserved="true" android:orientation="horizontal" android:overScrollMode="ifContentScrolls" android:rowOrderPreserved="true" > </GridLayout> </ScrollView> </merge> 片段XML的一个例子 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="200dp" android:layout_height="100dp" android:alpha="1" > <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="match_parent" […]

将项目添加到Fragment中的操作栏选项菜单后,进行方向更改后发生崩溃

我使用ActionBarSherlock和ViewPagerIndicator作为选项卡显示碎片。 其中一个碎片添加项目到ActionBar: private String[] mapNames; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); // init an String array `mapNames` which is used when populating submenu // … } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.fragment_maps, menu); SubMenu mapNamesMenu = menu.findItem(R.id.map_names).getSubMenu(); mapNamesMenu.clear(); for (int i=0; i<mapNames.length; i++) { mapNamesMenu.add(1, i, Menu.NONE, mapNames[i]); } super.onCreateOptionsMenu(menu, […]

在Android Viewpager中更改页面标题

我有一个ViewPager ,我正在使用getPageTitle方法来获取当前页面的标题。 这里是适配器代码: @Override public Fragment getItem(int i) { details = productData.get(i); Fragment fragment = new ProductViewFragment(); Bundle args = new Bundle(); args.putInt(ProductViewFragment.ARG_SECTION_NUMBER, i + 1); fragment.setArguments(args); return fragment; } @Override public int getCount() { return productData.size(); } public CharSequence getPageTitle(int position) { return (position+1)+" of "+myData.size(); } 现在我想更新上一​​个和下一个片段的页面标题。 我想把它们命名为“上一个”和“下一个”。 而且它应该在后续页面上dynamic更新。 我能够获得当前页面的标题号码。 例如,当我查看第五个片段时,当前片段将正确显示标题。 在ViewPager的两个angular落,它在左边和下一个页面标题号码的右边显示了前一页的标题号码。 现在,我希望页面标题的左侧是“前一个”,右侧是“下一个”,类似于Gmail应用程序,以及它如何在ViewPager中显示邮件数量。 […]

从onContextItemSelected显示的DialogFragment不会在onPause / onResume中生存

我有一个DialogDragment,我可以显示以下两种方法之一: 1)通过点击OnItemClickListener中的ListView项目 2)通过激活ListView的上下文菜单并select一个菜单项 在所有生命周期事件中,#1都能正常工作,但是如果我通过#2调用它,并暂停活动(通过回家)并通过任务切换器恢复活动,则不再显示该对话框。 片段在那里,我可以旋转设备并显示对话框。 我进行了实验,如果将DialogFragment的显示延迟至less1/2秒,就可以工作。 以下片段失败 – 显示对话框,但暂停/恢复隐藏它: public boolean onContextItemSelected(android.view.MenuItem item) { boolean consumed = false; switch (item.getItemId()) { case R.id.menu_item: showMyDialogFragment(); consumed = true; break; } return consumed; } 所以下面的代码片段工作。 暂停/继续再次正确显示对话框: public boolean onContextItemSelected(android.view.MenuItem item) { boolean consumed = false; switch (item.getItemId()) { case R.id.menu_item: new Handler().postDelayed(new Runnable() { public void run() […]

创build和使用片段的视图,但不可见的用户

原因 我需要这样做,因为我想获得片段视图的可绘制caching,然后从该视图创build一个位图。 这个位图将被用来在Facebook上发布。 问题 当我创build我的Fragment的时候,视图并没有被创build,因为它们没有通过Fragment Transaction添加,而且它们包含的视图对用户是不可见的。 我也不想手动绘制这些视图,因为我不会得到一个确切的复制品的屏幕。 我的问题 有没有一种方法可以使Fragment具有完整的function(与通过FragmentTransaction添加function相同),而不会显示片段? 我需要能够访问片段的视图,当它不可见。 提前致谢

DataPicker在新的API上也看起来像旧的devise

所以问题很简单: 我已经在我的应用程序中集成了DatePicker 。 不是作为一个DialogDatePicker而是作为一个View组件(更确切地说是一个View内部的一个dynamic显示和从我的主FragmentActiviy布局中包含的FrameLayout中删除)。 现在我的问题是,这个DataPicker看起来像这样: 而不是像这样: 即使我瞄准更高的API,我也尝试将我的Min SDK设置为16或17,但它也没有任何帮助。 有人知道为什么会发生? 以及如何显示数据选取器的新外观? 最好在老版本的Android上呢? 任何帮助,将不胜感激。 谢谢。 编辑:代码: DataPickerFragment xml: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:paddingLeft="6.5dp" android:paddingTop="6dp" android:paddingRight="8.5dp" android:paddingBottom="8.5dp" android:background="@drawable/date_picker_background"> <DatePicker android:id="@+id/datePicker" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:paddingBottom="40dp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/bCancel" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_weight="1.0" android:onClick="buttonCanceDatePickerOnclick" android:text="@string/cancel" /> <Button android:id="@+id/bSave" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_weight="1.0" android:onClick="buttonSaveDatePickerOnclick" […]