Articles of android fragments

片段在背景可看见

我正在开发一个具有三个片段的应用程序,这些片段在XML文件中定义: [HeaderFragment] [MainFragment] [FooterFragment] 第一个屏幕启动三个片段,Header-和FooterFragment是静态的,因此不会更改内容。 MainFragment是一个初始菜单,带有按钮和透明背景( MenuFragment )。 单击菜单中的项目时,我将MenuFragment替换为新片段( DetailsFragment ),如下所示: FragmentTransaction transaction = mFragmentManager.beginTransaction(); Fragment newFragment = new DetailFragment(); transaction.replace(R.id.content_container, newFragment); transaction.addToBackStack(newFragment.getTag()); transaction.commit(); DetailFragment显示出来,当我按下时, MenuFragment出现,一切正常。 这是我的问题: 在我的DetailFragment ,我有一个切换选项来过滤内容,这是一个按钮。 单击此按钮时, DetailFragmentFiltered DetailFragment与上述代码相同的方式替换DetailFragment 。 唯一的区别是我没有将它添加到BackStack,因为在过滤并按Back后我仍然想要返回到MenuFragment 。 当我单击filter按钮并按Back时,我的MenuFragment后面会显示DetailFragment (或DetailFragmentFiltered )。 那么,我不想要这个。

新手应该忘记片段吗?

我刚开始在Android上开发。 当我看到TabActivities被弃用时,我正在练习API 15中的Tablayout教程。 我现在最好忘记碎片并继续使用TabActivities进行开发吗?

为什么禁用TabActivity(原因)?

这不是重复的我如何使用片段,现在不推荐使用TabActivity? 经过一些研究后,结论是TabActivity已被弃用,因为我们现在必须使用片段。 到目前为止,我读到的原因是,使用操作栏可以更好地处理片段,并且通过支持兼容性库,它也可以从Android 2.1开始实现 但我仍然不明白它被弃用的原因 。 为什么不让动作栏也适用于活动? 为什么片段更喜欢? 我也看过片段有更好的表现……是什么原因? 活动至少是清晰的分离实体,这是积极的。 我现在对片段没有足够的洞察力来理解为什么它们更好。 提前致谢…

替换父片段根布局的子片段

我有一个5个片段的viewpager,其中一个我想通过按钮点击完全替换它。 我也希望能够通过后退按钮隐藏子片段。 这里的片段布局: 当我尝试像这样替换contacts_layout : ImportContactsFragment importContactsFragment = new ImportContactsFragment(); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); transaction.addToBackStack(null); transaction.replace(R.id.contacts_layout, importContactsFragment).commit(); 它不起作用(我的意思是没有错误,但我的ImportContactsFragment根本没有显示)。 但是,当我尝试替换import_contacts视图时,如下所示: ImportContactsFragment importContactsFragment = new ImportContactsFragment(); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); transaction.addToBackStack(null); transaction.replace(R.id.import_contacts, importContactsFragment).commit(); 一切正常,显示了ImportContactsFragment。 所以我想知道是否可以用子片段替换所有片段内容? 也许我可以用其他方式做到这一点?

SherlockFragmentActivity导致ClassNotFoundException

我正在上一个扩展SherlockFragmentActivity的课程 当试图运行程序时,我得到了ClassNotFoundException 我试过这个解决方案,但无济于事。 我还想提一下,我将此类设置为清单中的启动器活动。 此外,当我将SherlockFragmentAcivity更改为SherlockFragmentAcivity ,我能够运行程序但不能再使用片段,因为SherlockActivity类中没有getSupportFragmentManager()方法。

ListView项目中的YouTubePlayerSupportFragment为null

我正在尝试在ListView项目中使用YouTubePlayerSupportFragment 。 ListView位于Activity的Fragment中。 由于存在嵌套片段,我使用getChildFragmentManager()方法尝试从XML布局中查找片段。 这是代码。 Java的 convertView = inflater.inflate(R.layout.youtube_post_layout, null); YouTubePlayerSupportFragment youTubePlayerFragment = (YouTubePlayerSupportFragment) getChildFragmentManager().findFragmentById(R.id.youtube_video); if (youTubePlayerFragment == null) { Log.i(“YouTube”, “player is null”); } else { Log.i(“YouTube”, youTubePlayerFragment.toString()); } XML 问题是,当我尝试通过执行findFragmentById()从XML获取它来创建片段时,它返回null,这就是发布到堆栈跟踪的内容。 我正在尝试关注YouTube API示例并进行嵌套片段所需的更改,但我无法找出导致问题的原因。

Android DialogFragment不会被忽略

我在Android中有一个自定义对话框,我在onCreateView方法上创建对话框视图。 public class FiltroDialog extends DialogFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 当我尝试关闭对话框时,我在onClickListener调用的对话框中有一个方法 boton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.d(TAG,”doDismiss”); FiltroDialog.this.dismiss(); } }); 我已经覆盖了对话框中的几个onMethods,以查看对话框中发生的事情。 @Override public void onDestroyView() { super.onDestroyView(); Log.d(TAG, “onDestroyView”); } @Override public void onAttach(Activity activity) { super.onAttach(activity); Log.d(TAG, “onAttach”); } @Override public void onDetach() […]

之前调用Fragment的onStart()来显示Viewpager,navigation_mode_tabs

我使用ViewPager和带有NavigationMode的ActionBar:“NAVIGATION_MODE_TABS” 我放了3个片段:Fragment0(左标签),Fragment1(中间标签),Fragment2(右标签) 首先,出现Fragment0,并为Fragment0和Fragment1调用方法“onCreateView”和“onStart” 如果我水平滑动以转到“中间选项卡”(Fragment1),则会调用Fragment2(右选项卡)的方法“onCreateView”和“onStart”… 所以,我想知道这是否正常? 因为我想在它出现之前调用Fragment2的“onStart”,它是怎么做到的? 我的代码: public class ActivityPrincipale extends FragmentActivity { private Intent intentService1; private Fragment fragment; [..] private ActionBar.TabListener tabListener; @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setContentView(R.layout.viewpager); // Création de la liste de Fragments que fera défiler le PagerAdapter listFragments = new Vector(); // Ajout des Fragments dans la liste des […]

在onPageSelected()中访问时,片段成员variables变为null

我正在使用FragmentPagerAdapter和FragmentActivity来创建可滑动的片段。 我在pagerAdapter中的第一个片段看起来像这样。 public class MySummaryFragment extends CommonFragment implements OnPageChangeListener { private Context mContext; private View mMyView; LinearLayout mDetailLayout; TextView mDateTxtView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { System.out.println(“onCreateView() Market summary”); mMyView = inflater.inflate(R.layout.my_page_summary_fragment_layout, container,false); mDetailLayout = (LinearLayout)mMyView.findViewById(R.id.SummaryDetailLayout); mDateTxtView = (TextView) mMyView.findViewById(R.id.txtDate); Account_Id = AccountDetails.getInstance(mContext).getClientCodes().get(0); sendRequest(Account_Id); return mMyView; } @Override public void onPageSelected(int […]

Android FragmentTab主机和片段内的片段

我有一个像这样的层次结构的app: FragmentTabHost (Main Activity) – Fragment (tab 1 content – splitter view) – Fragment (lhs, list) – Framment (rhs, content view) – Fragment (tab 2 content) – Fragment (tab 2 content) 所有片段视图都从资源中膨胀。 当应用程序启动时,一切都会显示,看起来很 当我从第一个选项卡切换到另一个选项卡并再次返回时,我会尝试重新启动exception,尝试重新创建选项卡1的视图。 深入挖掘,这就是发生的事情: 在第一次加载时,对分割器视图进行膨胀会导致其两个子片段被添加到片段管理器中。 在切换远离第一个选项卡时,它的视图被破坏但它的子片段留在片段管理器中 切换回第一个选项卡时,视图会重新膨胀,并且由于旧的子片段仍在片段管理器中,因此在实例化新的子片段时会抛出exception(通过膨胀) 我通过从片段管理器中删除子片段来解决这个问题(我正在使用Mono),现在我可以切换标签而没有例外。 public override void OnDestroyView() { var ft = FragmentManager.BeginTransaction(); ft.Remove(FragmentManager.FindFragmentById(Resource.Id.ListFragment)); ft.Remove(FragmentManager.FindFragmentById(Resource.Id.ContentFragment)); ft.Commit(); base.OnDestroyView(); } 所以我有几个问题: 以上是正确的方法吗? […]