Articles of android fragments

如何使用PagerAdapterreplaceViewPager中的片段?

我的问题 我正在使用ViewPager在FragmentActivity显示片段。 ViewPager从附加的FragmentPagerAdapter获取片段。 mViewPager = (ViewPager) findViewById(R.id.view_pager); mAdapter = new HomePagerAdapter(getSupportFragmentManager()); mViewPager.setAdapter(mAdapter); 假设ViewPager有3个片段可以显示: Fragment1 , Fragment2 , Fragment3 。 Fragment1是一个网格片段,并显示一个网格。 Fragment2和Fragment3有自己的内容要显示。 当在屏幕上使用滑动, ViewPager将显示下一个片段 – Fragment2 。 等等。 我想要的是? 我想要的是,当网格中的项目(由Fragment1显示)被点击时, Fragment1应该完全replace为其他片段,比如说Fragment4 (这是不同的片段,不会被连接的适配器返回)。 用户将在Fragment4工作,并在ButtonBack点击(就在Fragment4旁边的button)后,带有网格的Fragment1应该再次显示。 同时ViewPager应该performance相同,即在滑动,下一个片段(在我们的情况下, Fragment2 )将被显示。 所以我只想得到像在例子中一样的行为: http : //developer.android.com/training/basics/fragments/fragment-ui.html#Replace 我的问题 那么,这有可能实现吗? 如果是,那么如何? 我将非常感谢您的帮助。 亚历克斯。 PS对不起,我的英文:)

按下活动操作栏后退button时如何转到上一个选定的选项卡

我在MainActivity中有六个选项卡,第二个选项卡有一个列表视图,当用户按下列表视图项目时,它打开一个新的活动与操作栏,所以,当用户按下第二个活动的后退button,我想去主活动的前一个选项卡(第二个选项卡),但加载第一个选项卡(主页选项卡)。 我如何解决这个问题?

在选定的底部导航视图项目上重新创build片段

以下是我select底部导航视图项目的代码 bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { Fragment fragment = null; switch (item.getItemId()) { case R.id.action_one: // Switch to page one fragment = FragmentA.newInstance(); break; case R.id.action_two: // Switch to page two fragment = FragmentB.newInstance(); break; case R.id.action_three: // Switch to page three fragment = FragmentC.newInstance(); break; } getSupportFragmentManager().beginTransaction().replace(R.id.container,fragment,"TAG").commit(); return true; […]

从首选标题开始活动

我正在实现n层PreferenceActivities第一层PreferenceActivity从首选项标题加载。 第一个头创build一个PreferenceFragment的设置片段。 其次是一个浏览器活动(第二个是来自developer.android.com的例子),它打开指定的Url。 第三个我想成为PreferenceAtivity的下一级,也将从首选项标题加载。 前两个工作正常,但第三是崩溃的应用程序的例外: “android.content.ActivityNotFoundException:找不到处理Intent的行为{act = android.intent.action.VIEW dat = com.mycompany.myapp.ui.MyPreferenceActivity}” 清单文件中声明的MyPreferenceActivity。 在main_headers.xml中可能声明的活动是错误的,但我没有在参考资料中find任何提示如何正确执行。 尝试了几个变化,他们没有工作。 我使用的示例: http : //developer.android.com/reference/android/preference/PreferenceActivity.html 任何想法为什么它不适合我或如何下一个PreferenceActivity可以被称为? 基本上我只需要从头开始一个活动,这应该很简单,但我错过了一些东西。 public class MySettings extends PreferenceActivity { @Override public void onBuildHeaders(List<Header> target) { loadHeadersFromResource(R.xml.main_headers, target); } } main_headers.xml: <?xml version="1.0" encoding="utf-8"?> <preference-headers xmlns:android="http://schemas.android.com/apk/res/android" > <header android:title="Custom Settings" android:fragment="com.mycompany.myapp.ui.SettingsFragment" /> <header android:title="Intent" android:summary="Launches an Intent."> <intent android:action="android.intent.action.VIEW" […]

活动和片段的相互作用

我有一个多个Fragment的Activity 。 我想显示一个DialogFragment或者从其中一个Fragment打开另一个Fragment 。 我知道一个Activity应该是一个负责打开Fragment的人,所以我尝试了一些东西。 第一 我试图使用getActivity()并将其getActivity() ,以便我可以在Activity调用一个方法来显示一个Fragment但是这会在Fragment创build一个依赖项,并且我希望尽可能避免添加依赖项。 第二 接下来,我尝试了一个监听器来通知Activity它应该显示一个Fragment 。 所以我在Activity创build了一个类来实现监听器接口。 但我有问题,因为我不得不使用New MyActivity().new Listener(); 当我尝试使用getSupportFragmentManager()时它会抛出Exception ,因为Activity这个实例没有初始化。 第三 然后我试图让Activity实现监听器直接工作,因为那么我只是创build一个依赖与侦听器,而不是活动。 但是现在我已经到了我的Activity将实施2 – 4个不同的界面,这使我犹豫不决,因为它会严重降低凝聚力。 所以我试过的任何方式似乎都跑进了一堵砖墙,并创造了依赖关系,我不确定是否需要创build。 我拧了,必须去与这些选项之一? 如果是的话哪个选项最好? 任何帮助或build议是非常感激。

从ViewPager中的FragmentActivity获取Fragment中TextView的ID

我正在与3 Fragments ViewPager和我想在第三页更改TextView文本。 在那个页面中,我有一个Button ,当它按下时,去SD图像select一个。 完成后,返回到页面,并希望用该图像的path更新TextView 。 问题是,当我尝试从FragmentActivity访问该TextView它是空的。 这是我的代码 SherlockFragmentActivity: public class TabsFacturasActivity extends SherlockFragmentActivity { protected MyApplication myApplication; private static final int FILE_SELECT_CODE = 0; private MyAdapter mAdapter; private ViewPager mPager; private PageIndicator mIndicator; private TextView textViewImg; private int lecturas = 0; private SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); private boolean adjunto = false; private […]

AppCompat v7工具栏上/下箭头不起作用

我在活动中有两个片段。 当片段A显示时,我希望显示导航抽屉汉堡图标并使抽屉导航工作。 当片段B显示时,我想要后退箭头显示,当它被点击做一个向上的导航。 然而,我似乎无法得到新的AppCompat v7工具栏显示在我的ActionBarActivity里面的向上箭头,除非导航抽屉打开。 在我的活动中,我的onCreate()方法… toolbar = (Toolbar) findViewById(R.id.toolbar); if (toolbar != null) { setSupportActionBar(toolbar); } mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close); mDrawerLayout.setDrawerListener(mDrawerToggle); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); 然后我调用mDrawerToggle.syncState(); 在我的onPostCreate() 我试着search如何以编程方式触发工具栏图标到后退箭头,但没有任何工作。 从我所收集到的,呼唤 getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); 从我的片段应该改变图标,但事实并非如此。 这可能是一个愚蠢的问题,但我做错了什么?

将支持库更新到27.0.0后,我的片段中有多个错误

将支持库从v-26.1.0更新到v-27.0.0之后将碎片中的多个错误更新。 这里是一些这些错误的列表: 错误:智能转换为“捆绑”是不可能的,因为“参数”是一个可以改变的可变属性。 错误:'onCreateView'覆盖任何东西 错误:'onViewCreated'覆盖任何东西 错误:types不匹配:推断types是View? 但是View是预期的 错误:types不匹配:推断types是上下文吗? 但上下文是预期的 错误:types不匹配:推断types是FragmentActivity? 但上下文是预期的 错误:types不匹配:推断types是FragmentActivity? 但上下文是预期的 从android工作室的模板为空片段。 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (arguments != null) { mParam1 = arguments.getString(ARG_PARAM1) mParam2 = arguments.getString(ARG_PARAM2) } } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater!!.inflate(R.layout.fragment_blank, container, false) } override fun onViewCreated(view: View?, savedInstanceState: Bundle?) { […]

显示前一个片段

如何删除当前和显示前一个片段? 就像我按“返回”button 我正在使用这样的结构: FragmentManager fm=getFragmentManager(); FragmentTransaction ft=fm.beginTransaction(); ft.remove(fragment).commit(); 但它只是删除当前片段,而不显示以前

什么时候Fragment的onDestroyView被调用,但是不会被销毁?

看一个片段的生命周期,我不知道在这里可能发生的情况。 片段停止活动时,有两种可行的方法。 调用适当的callback,销毁视图,然后销毁碎片 调用callback,销毁视图,但保持片段本身活着 在两种情况下,哪一种可以做? 什么决定他们哪一个? 如果片段被添加到后台,然后删除/replace,为什么不把它扔掉? 为什么要保持它? 编辑:它曙光在我身上,可以依赖是否保留片段?