Articles of android fragments

片段 – getArguments()返回一个空包

希望有人能帮我理解这个: 我正在使用单活动应用程序和许多在同一容器中替换的Fragments,我正在一个真实设备中测试我的应用程序并启用了“不要保持活动”选项 当添加新片段时(使用FragmentTransaction replace()方法),我使用setArguments()方法将信息传递给新的片段。 它按预期工作,我可以在Fragment中使用getArguments()获取该信息。 到目前为止一切都还好…… 在此之后,我将我的应用程序发送到后台。 我看到堆栈中的所有碎片都被破坏了,再次如预期的那样 我把我的应用程序带到前台,在getArguments()方法中,我得到一个空的Bundle (不是null,只是一个空的Object)而不是我在#2中使用的数据的那个 根据Android文档, setArguments()提供的参数将在片段销毁和创建中保留…所以,我的问题是: “将在片段销毁和创建中保留”是否包括我描述的场景? 如果启用了“不要保持活动”选项会搞乱getArguments() / setArguments()吗? 除了“不要保持活动”选项之外,有没有办法测试正确的片段创建/销毁? 什么是正确保持片段的参数“活着”的更好方法? 我可以将它们保存在onSaveInstanceState()方法中,但是想知道除此之外是否还有更多选项。

我无法在Android Oreo中收到“android.provider.Telephony.SMS_RECEIVED”这个广播

这是我的Menifest文件 这是我的广播接收器类 public class OTPReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if(intent.getAction().equals(“android.provider.Telephony.SMS_RECEIVED”)){ } }

当我第二次打开父片段时,我的Viewpager崩溃了

一些信息:我有一个片段,其中包含一个包含三个片段的viewpager。 我第一次打开这个片段时,viewpager工作正常。 我第二次尝试打开这个片段然后崩溃跟随堆栈跟踪 注意:这发生在kitkat 19 API以上,其工作正常 父片段内的ViewPager设置代码 private void setupViewPager(ViewPager viewPager) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { adapter = new ViewPagerAdapter(getChildFragmentManager()); } else { adapter = new ViewPagerAdapter(getFragmentManager()); } adapter.addFrag(fragment1 , “Abc”); adapter.addFrag(fragment2, “Bcd”); adapter.addFrag(fragment3, “Cdf”); viewPager.setAdapter(adapter); viewPager.setOffscreenPageLimit(2); myTabs.setupWithViewPager(viewPager); } 我的viewpager适配器 class ViewPagerAdapter extends android.support.v13.app.FragmentPagerAdapter { private final List mFragmentList = new ArrayList(); private final […]

初始化时片段的布局字段为NULL

我有将数据传递给片段的问题。 它在生产中的所有时间都有0.1%的崩溃。 让我们说100k开放活动它发生了100次。 它看起来不常见,但它非常困扰我,我认为我在使用数据进行片段初始化时出错了。 问题是,我只创建了一次片段,而其他所有时间我都需要将数据传递给它们我正在做下一步: myFragmentInstance.setData(Object someData); 崩溃发生是因为它告诉我们没有find片段中的那些视图元素并且它们是NULL,但是如果我没有重新创建它们,一切都应该没问题。 我没有旋转手机,也没有足够的内存。 它发生在网络重新连接上,因为在网络重新连接时,我将服务器获取新数据,然后将新数据设置为我的片段。 我有我使用的两个片段的字段照片,maby你们中的一些人知道这些数据可以告诉崩溃时片段的状态。 我正在使用库ButterKnife初始化片段和活动的字段,而不是用findById初始化它,maby它有一些影响或没有? 这里是简单项目的链接(仅限github上的这个问题): https : //github.com/yozhik/Reviews/tree/master/app/src/main/java/com/ylet/sr/review 描述: CollapsingActivity – 与Collapsing AppBarLayout活动。 它将一个或两个片段加载到“ fragment_content_holder ”中,并且它具有TabLayout以在视图寻呼机中的片段之间切换。 在活动方法onCreate() – 我只是模拟对服务器的请求( loadData ),并且当加载一些假数据时 – 我在第一次调用时在视图寻呼机中显示片段 – 我正在创建新的TabMenuAdapter扩展FragmentPagerAdapter ,用它填充它片段并保存实例的链接。 在下一个调用中 – 我不会从头开始创建片段,只是用新数据填充它们。 MenuFragment1, MenuFragment1 – 两个片段。 MenuFragment1 – 具有方法public void setupData(SomeCustomData data) ,用于设置新数据,而不是在网络重新连接时重新创建片段。 NetworkStateReceiver – 侦听网络更改并发送通知。 TabMenuAdapter – 只是用于保存片段的简单类。 05-11 […]

如何在onLoadFinish回调方法中提交FragmentPagerAdapter中的Fragment事务?

我想通知ViewPagerAdapter在Loader.onLoadFinish回调函数中更改了数据集。 它被阻止了,因为可能会保存片段的状态。 从LoaderManager.LoaderCallbacks.onLoadFinished(Loader loader,D data)方法文档: 请注意,通常,在此调用中,不允许应用程序提交片段事务,因为它可能在保存活动状态后发生。 我怎样才能克服这个问题? 如何检查Activity是哪个状态并提交Fragment事务?

片段生命周期的监听器

如果我有一个片段对象,有没有办法可以通知该片段的生命周期方法? 一种可能的方法是在我的片段中实现这种机制,片段通知监听器,但这需要我需要在片段的所有方法中添加的样板代码。 Android平台级别是否支持此function?

启动片段的最佳方式

我有以下情况。 tabhost管理四个ListFragmnet。 对于每个ListFragment,我都有几个片段。 例如,与ListFragmnet 1相关联,我有片段A,B,C,并且可以发生片段A“启动”片段B,它可以启动片段C.是否正确允许片段相互启动或者是否有更正确的方法? 谢谢 编辑: TabFragmentActivity: tab1(ListFragment): fragment 1 -> fragment 2 -> …. -> fragment N tab2(ListFragment): fragment 1 -> fragment 2 -> …. -> fragment N tab3(ListFragment): fragment 1 -> fragment 2 -> …. -> fragment N tab4(ListFragment): fragment 1 -> fragment 2 -> …. -> fragment N 这是想要实现的。 那么,我的问题是,每个标签管理从片段1到片段N的事务的最佳方法是什么? 再次感谢

在重新创建活动时未初始化lateinit属性

在我的Activity中,我有一个名为controller的lateinit属性,我的Fragment使用它。 此属性在Activity.onCreate()初始化。 My Fragment通过onAttach()将其引用返回到我的Activity 。 然后Fragment在Fragment.onCreate()调用myActivity.controller 。 通常, controller首先在Activity.onCreate()初始化,然后添加Fragment 。 所以这很好用。 但是当我的Activity被杀死时,它会尝试重新创建自己及其碎片。 这会导致在Activity.onCreate()进行初始化之前调用Fragment.onCreate() Activity.onCreate() 。 这些是我现在看到的选项: 在super.onCreate()之前初始化controller (如果可能的话) 将调用移动到myActivity.controller到更高版本的生命周期回调,如onViewCreated() 在Kotlin 1.2中可以使用::controller.isInitialized 我最好的选择是什么?

折叠工具栏仅适用于导航视图中的一个片段

问题 我有一个带有不同碎片的导航抽屉。 每个Fragment都应该使用一个默认工具栏,除了一个需要折叠Toolbar Fragment 。 我的问题 如何在片段的工具栏之间切换?

对话框中的Android Maps API v2

我试图在对话框中显示GMaps,可以这样做吗? 我有布局 并将此XML扩展为对话框,如下所示…… LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.dialog_location, null); AlertDialog.Builder builder = new AlertDialog.Builder(context).setView(layout); AlertDialog alertDialog = builder.create(); alertDialog.show(); 但是,在通货膨胀期间,我得到运行时错误…… 02-02 12:52:56.045: W/dalvikvm(23044): threadid=1: thread exiting with uncaught exception (group=0x40f862a0) 02-02 12:52:56.050: E/AndroidRuntime(23044): FATAL EXCEPTION: main 02-02 12:52:56.050: E/AndroidRuntime(23044): android.view.InflateException: Binary XML file line #8: Error inflating class fragment 02-02 12:52:56.050: […]