何时从android中的布局加载片段中的视图
Posted
技术标签:
【中文标题】何时从android中的布局加载片段中的视图【英文标题】:When to load views in Fragment from layout in android 【发布时间】:2016-06-25 11:26:50 【问题描述】:我是 android 新手,想知道在哪种生命周期方法中最好在片段中加载视图,例如
editText_full_name = (EditText) getActivity().findViewById(R.id.editText_full_name);
我正在考虑onResume()
,但有些事情告诉我它不合适。尽管如此,我想知道这样做的最佳实践。
我也使用接口作为从片段到活动的通信回调。
编辑:我还想知道何时将监听器附加到片段生命周期中的按钮上,例如 onClickListeners。
【问题讨论】:
充气完成后的onCreateView方法,或者onViewCreated方法; 【参考方案1】:检查Complete Android Fragment & Activity Lifecycle。
当确保视图层次结构已构建时,您可能希望在 Fragment.onViewCreated() 中添加侦听器。
【讨论】:
【参考方案2】:这取决于您要达到的目标。
首先,有一个函数public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState)
。在那里,可以在LayoutInflater
的帮助下完成视图初始化。要获得对子视图的引用,您必须在从 LayoutInflater
初始化返回的视图上调用方法 findViewById
。在此函数中还为您提供了Bundle
参数,它可以帮助您对配置更改(即屏幕旋转)做出反应。如果Bundle
参数不为空,则在配置更改后重新创建片段。
然后,有一个函数public void onViewCreated(View view...)
。在那里,您还可以初始化视图。每次调用,activity都会打开fragment。
关于表演的问题,我给你发了this *** answer
不要在onResume
中初始化视图,因为每次进入前台时都会调用此事件(向下和向上滑动通知面板,来自后台,屏幕打开和关闭)。
【讨论】:
【参考方案3】:正确的答案是在onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
中绑定视图。
顺便说一句,我建议你看看here。
这是绑定视图的绝佳工具。简单明了,不需要写很多语句,只需要在activity中使用@BindView(R.id.myId)
&添加Butteknife.bind(this)
,在fragment中添加Butterknife.bind(this, rootView)
将变量声明为Fragment变量即可。
【讨论】:
【参考方案4】:onCreateView
方法就是你要找的。p>
【讨论】:
【参考方案5】: @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
View rootView = inflater.inflate(R.layout.fragment_layout,
container, false);
Button button = (Button) rootView.findViewById(R.id.buttin_id);
button.setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
// TODO Auto-generated method stub
//.....
);
【讨论】:
以上是关于何时从android中的布局加载片段中的视图的主要内容,如果未能解决你的问题,请参考以下文章