fragment中怎么读取sharedpreferences数据
获取SharedPreferences的两种方式:
1 调用Context对象的getSharedPreferences()方法
2 调用Activity对象的getPreferences()方法
两种方式的区别:
调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享
调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用
在构造方法,或者set方法等注入fragment,类似很多自定义控件使用Context一样。
可以把Fragment想成Activity中的模块,这个模块有自己的布局,有自己的生命周期,单独处理自己的输入,在Activity运行的时候可以加载或者移除Fragment模块。
使用Fragment时,需要继承Fragment或者Fragment的子类(DialogFragment, ListFragment, PreferenceFragment, WebViewFragment)。
首先是Fragment的文件
activity_fragment_tabxml
接下来是主Activity的布局文件
activity_fragment_tabxml
Fragment的类文件
ContextFragmentjava
Activity的类文件
FragmentTabActivityjava
第一步、需要先获取FragmentManager,该对象可以对Fragment进行管理
第二步、获得FragmentTranscation,FragmentManage对Fragment的一系列事务 *** 作主要由FragmentTranscation来执行
第三步、实例化Fragment,这步没什么好说的
第四步、将Fragment添加到容器中,这里用的是add()方法,其中replace()也可以实现,目前还没有了解这两个方法的区别
第五步、用Bundle来通信,实现向Fragment传递数据,这里主要传的是文本的值
第六步、提交事务,如果忘了这一步,之前所做的都没有效果,就跟执行更新数据,却没有提交一样
第一步、需要先获取FragmentManager,该对象可以对Fragment进行管理
第二步、获得FragmentTranscation,FragmentManage对Fragment的一系列事务 *** 作主要由FragmentTranscation来执行
显示Fragment
隐藏Fragment
最后一步、提交事务
fragment的特点:
fragment总是作为Activity界面的组成部分。fragment可以钓鱼getActivity()方法获取它所在的Activity,Activity可以调用FragmentManager的findFragmentById()或者findFragmentByTag()方法来获取Fragment。
在Activity运行过程中,可以调用FragmentManager的add()、remove()、replace()方法动态的添加、删除或者替换Fragment。
一个Activity可以同时组合多个Fragment;反过来一个Fragment也可被多个Activity复用。
Fragment可以响应自己的输入事件,并拥有自己的生命周期,但它们的生命周期直接被其所属的Activity的生命周期控制。
2
官方介绍原图
3
最简单的创建一个Fragment只需要实现三个方法:
onCreate(): 系统创建Fragment对象后回调该方法,实现代码只初始化想要在Fragment中保持的必要控件,当Fragment被暂停或者停止后可恢复。
onCreateView(): 当Fragment绘制界面组件时会回调该方法。该方法必须返回一个View,该View也就是该Fragment所显示的View。
onPause(): 当用户离开该Fragment时将会回调该方法。
4
生命周期全程介绍图
5
在工作中长需要把 一个Activity 改成 fragment
从Activity到Fragment最大的变动在于,在Fragment里面的onCreate()函数内,是没有办法使用findViewById、setContentView这些函数的。因为Fragment本身并没有提供这些方法。于是我们只能通过onCreateView和onViewCreated来实现对显示的控制。
6
而一些Fragment没有提供的属于Activity的函数我们可以通过getActivity()得到作为parent的Activity来调用,因为Fragment只是作为片段提供给Activity使用的,所以很多功能的实现都被留在了Activity里面。
原先this的地方改为 getActivity()
content的地方 改为 getActivity()getApplicationContext()
这样修改Activity成 fragment 一般不会有问题。
有可能的页面比较复杂,自己对着生命周期看看相互间有什么方法可以替代或者自己写。
在使用fragment时首先要知道fragment的生命周期,我们能在生命周期方法中做什么 *** 作
onAttch(Activity activity):这个方法是在fragment与activity关联之后调用,我们能在这个方法中获取这个关联的activity的实例。但是当你的sdk更新到android60(api-23)是就会显示这个方法是过时的,使用onAttach(Context context)这个方法代替,但在看fragment的生命周期时,这个方法好像不调用,所以你获取的Context是null
onCreate:这个方法是在fragment初始化的时候调用,我们通常在这个方法中使用getArgument获取activity传来的初始化fragment的参数。
注意:在 这个方法中我们不能获取activity中的控件,下面的这段代码是在fragment的onCreate中的,你发现activity不是空,但是text是null。因为,这是activity的onCreate还没有执行完,即activity还没有创建完,要想获取activity相关的资源应该在onActivityCreated中获取。
[java] view plain copy
MainActivity activity=(MainActivity) getActivity();//activity不是null
TextView text=activityfindViewById(Ridtextview);//text是null
onCreateView:这个方法中我们主要是通过布局填充器获取fragment布局。我们在这个方法中通过viewfindViewById初始化fragment中的控件,
[java] view plain copy
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view=inflaterinflate(Rlayouttext_content, null);//获取布局
text=(TextView) viewfindViewById(Ridtextview);//初始化fragment的控件
return view;
}
onActivityCreated:这个方法是在activity的onCreate方法执行完执行这个方法,通知fragment,关联的activity的onCreate方法执行完了,即activity创建完了,可以在这个方法中获取activity中的资源。例如下面,可以获取activity布局中的TextView控件
[java] view plain copy
@Override
public void onActivityCreated(Bundle savedInstanceState) {
superonActivityCreated(savedInstanceState);
TextView text=getActivity()findViewById(Ridtextview);//获取activity布局中的TextView控件
}
onStart:这个是在activity的onstart执行完立即执行,这个方法执行完fragment界面就显示出来了,但是现在还没有获取焦点,用户是不能 *** 作。
onResume:这个方法是在activity的onResume方法执行完立即执行,此时fragment的获取了界面,用户可以 *** 作。
onPause:fragment失去焦点,此时用户是不能 *** 作的,执行完立即执行activity的onPause方法。
onStop:fragment不可见,执行完立即执行activity的onStop方法。
onDestroyView:在onCreateView中创建的fragment视图会被销毁。Fragment的视图被回收。
onDestroy:当这个fragment不再使用时调用。需要注意的是,它即使经过了onDestroy()阶段,但仍然能从Activity中找到,因为它还没有Detach
onDetach:fragment与activity解除关联,fragment的所有的资源都被回收。
以上就是关于fragment中怎么读取SharedPreferences数据全部的内容,包括:fragment中怎么读取SharedPreferences数据、android 怎么在自定义控件中获取控件所在fragment的实例、Android碎片Fragment之多标签切换效果(微信和QQ底部多标签切换)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)