Articles of android fragments

Android – 使整个搜索栏可点击

我在片段中使用search-view元素来实现搜索function。 问题是只有搜索图标是可点击的搜索栏中的其他区域是不可点击的,当我点击图标时我才能搜索。 你能帮我看一下整个搜索区域吗?

在浏览片段时正确处理DrawerLayoutanimation

我正在努力使用DrawerLayoutanimation做奇怪的事情; 如果我没有使用Handler来延迟fragment交易animation,那么汉堡包图标是滞后的并且经常从汉堡包切换到没有animation的箭头。 所以我最终放了一个处理程序,等到汉堡包图标执行animation,但我们不需要等到抽屉接近切换片段时感觉很自然。 我确信有更好的方法可以解决这个问题…… 这是我目前的做法: private void selectProfilFragment() { final BackHandledFragment fragment; // TODO test this again Bundle bundle = new Bundle(); bundle.putString(FragmentUserProfile.USER_FIRST_NAME, user.getFirstname()); bundle.putString(FragmentUserProfile.USER_LAST_NAME, user.getLastname()); bundle.putString(FragmentUserProfile.USER_PICTURE, user.getProfilepic()); bundle.putString(FragmentUserProfile.USER_EMAIL, user.getEmail()); bundle.putBoolean(FragmentUserProfile.USER_SECURITY, user.getParameters().getSecuritymodule().equals(“YES”)); fragment = new FragmentUserProfile(); fragment.setArguments(bundle); mDrawerLayout.closeDrawer(mDrawerLinear); new Handler().postDelayed(new Runnable() { public void run() { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.setCustomAnimations(R.anim.pull_in_right, R.anim.push_out_left, R.anim.pull_in_left, R.anim.push_out_right); ft.replace(R.id.content_frame, […]

commitAllowingStateLoss()和commit()片段

我想在网络后台操作后提交一个片段。 我在成功进行网络操作后调用了commit(),但是如果活动进入暂停或停止状态,则崩溃应用程序会说IllegalStateexception。 所以我尝试使用commitAllowingStateLoss()并且它现在工作正常。 我浏览了一些博客和文章,它说commitAllowingStateLoss()不好用。 什么是在网络操作处理活动暂停和停止状态后处理提交片段的方法?

Android:ViewPager卡在视图之间

我有一个在Fragments之间滑动的ViewPager。 我正在使用FragmentStatePagerAdapter将Fragments提供给ViewPager。 如果用户以正常速度向左滑动,然后非常快速地向右滑动,则可以使ViewPager进入奇怪状态,其中显示多个碎片。 例如,如果用户在片段A上,则以正常速度向左滑动到片段B,然后快速向右滑动以返回到片段A,然后在屏幕上显示片段A和B. 任何人都有任何关于为什么会发生这种情况的想法或一个预防它的好方法? 这是它的样子: 这是我在XML中的ViewPager定义: 此外,我记录了来自onPageChangeListener()的输出,并注意到当ViewPager卡在视图之间时,它报告的positionOffset为0.这是ViewPager的值在它登陆时从STATE_DRAGGING转换为STATE_SETTLING到STATE_IDLE的样子。奇怪的状态: state = 0 prevState:2 position:1 positionOffset:0.0 state = 1 prevState:0 position:1 positionOffset:0.0 state = 2 prevState:1 position:1 positionOffset:0.4069444 state = 0 prevState:2 position:2 positionOffset:0.0 所以看起来好像ViewPager正在向我报告错误的positionOffset。 完整示例代码活动和适配器: public class ActivityBagelProfileViewer extends CustomAbstractFragmentActivity implements CustomActionBarContract, ListenerProgress, ListenerSync { public static final String EXTRA_BAGEL_INDEX = “BAGEL”; public static final int […]

如何从活动(viewpager)更新片段内容?

我有一个带有两个片段的简单viewPager。 每个片段都包含一个TextView。 我希望能够更新活动中显示的当前textView的文本。 活动: public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); ArrayList fragments = new ArrayList(); fragments.add(Fragment.instantiate(this, Live.class.getName())); fragments.add(Fragment.instantiate(this, Hit.class.getName())); this.pagerAdapter = new MyPagerAdapter(getSupportFragmentManager(),fragments); ViewPager pager = (ViewPager) findViewById(R.id.viewpager); pager.setAdapter(pagerAdapter); } } 适配器: public class MyPagerAdapter extends FragmentPagerAdapter { private final ArrayList fragments; public MyPagerAdapter(FragmentManager fm, ArrayList fragments) […]

使用Android中的工具栏实现正确的后退导航和主页按钮处理

我在同一个活动中使用单个活动和多个片段(附加截图)来提供无缝导航。 但在实现最新的工具栏和导航视图后,似乎很难处理导航和主页按钮。 我遇到以下问题。 在左上角管理汉堡/后退按钮。 将图标和function切换到菜单和返回导航。 页面标题 – 每当推送和popup片段时更改页面标题。 我已经尝试了一些事情,比如重写onBackPressed(),setHomeAsUpIndicator,手动popup片段。 早些时候我正在使用ActionBarDrawer切换来处理这个问题,但现在却以某种方式失败了。 我检查了谷歌样本,他们似乎在大多数地方使用单独的活动。 任何人都可以指导我如何实现正确的后退导航来处理内部片段和页面标题中的NavigationView,Back按钮? 我正在使用AppCompatActivity , android.app.Fragment , NavigationView和Toolbar 。 片段2 – >片段3″>

将100个活动应用程序移植到碎片而不会死亡

我为银行开发了一个巨大的应用程序。 该应用程序使用户能够通过电话执行大量操作(国内和国际转移,证券,股票市场价值,警报,存款,卡更改,卡激活,支票等)。 所有应用程序都运行Android本机代码,每个屏幕都是一个Activity。 现在我们正在转向Fragments …我可以根据这些教程来实现这 一点 ……我甚至已经优化了它们的过程。 但是,根据他们的建议,我将不得不创建大约100个新的Fragment类; 切换我在每个屏幕活动上的代码并将其放在那些新的每个屏幕的Fragment类中; 更新大约100个布局; 最后更新屏幕触发新屏幕的方式(使用FragmentManager而不是Intents)。 也许并不困难,但繁琐乏味。 我的问题是,有人知道将100个活动应用程序移植到Fragments的快速方法比提到的教程更快吗? 谢谢

如何使用FragmentPagerAdapter获取包含不同内容的标签?

我希望有不同的标签,你可以在Android市场中轻扫。 每个选项卡应使用一个片段并使用一种方法。 这是我的FragmentPagerAdapter类: public class SectionsPagerAdapter extends FragmentPagerAdapter { public SectionsPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { Fragment fragment =null; switch (position) { case 0: fragment = new ConnectionFragment(); break; case 1: fragment = new DataFragment(); break; case 2: fragment = new GraphFragment(); break; } return fragment; } @Override public int […]

add()和replace()与Fragment的生命周期之间的区别

我的程序有6个片段:Fragment1,Fragment2,….-> Fragment6。 我使用add()和replace()语句在片段之间切换并跟踪它们的生命周期。 Fragment1 添加 Fragment2 添加 Fragment3 添加 Fragment4 添加 Fragment5 替换 Fragment6 log-cat显示了它们的生命周期(我在onCreate中有一些printf-points,onCreateView,onDestroyView,onDestroy用于跟踪) 标签 __ _ __ _ __ _ __ _ __ 文字 Fragment1_ _ __ _ ___ _onCreate Fragment1_ _ __ _ ___ _onCreateView Fragment1_ _ __ _ ___ _add Fragment2 Fragment2_ _ __ _ ___ _onCreate Fragment2_ _ __ _ […]

Android Reorder Fragment Backstack

我的导航抽屉中列出了许多页面/片段,用户可能经常在这些页面/片段之间切换,我希望它们在后台堆栈中以便他们可以导航回来,但我只想在后台堆栈中使用每个片段的一个实例用户不必按下疯狂的次数退出应用程序。 我无法弄清楚如何在没有删除页面的情况下有效地“重新排序”后台堆栈。 目前,当我更改页面时,我正在使用此代码更改片段并确保它仅在后面的堆栈中一次 if (mFragMgr == null) { mFragMgr = getSupportFragmentManager(); } String backStateName = fragmentDescriptor.name(); boolean fragmentPopped = mFragMgr.popBackStackImmediate(backStateName, 0); if (!fragmentPopped){ mFragMgr.beginTransaction() .remove((Fragment) mFragment) .replace(R.id.content_frame, (Fragment) mFragment) .addToBackStack(backStateName) .commit(); } 我在onBackPressed中使用此代码 @Override public void onBackPressed() { if (mFragMgr.getBackStackEntryCount() > 0) { mFragMgr.popBackStackImmediate(); } else { super.onBackPressed(); } } 这有效,但这意味着它删除了我不想删除的页面。 例: 当我的用户按照A > B […]