【问题标题】:When to load views in Fragment from layout in android何时从android中的布局加载片段中的视图
【发布时间】:2016-06-25 11:26:50
【问题描述】:

我是 android 新手,想知道在哪种生命周期方法中最好在片段中加载视图,例如

editText_full_name  = (EditText) getActivity().findViewById(R.id.editText_full_name);

我正在考虑onResume(),但有些事情告诉我它不合适。尽管如此,我想知道这样做的最佳实践。 我也使用接口作为从片段到活动的通信回调。

编辑:我还想知道何时将监听器附加到片段生命周期中的按钮上,例如 onClickListeners。

【问题讨论】:

  • 充气完成后的onCreateView方法,或者onViewCreated方法;

标签: android performance android-fragments


【解决方案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 Stackoverflow 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
          
                        //.....
          
                        }
                     });
               }
          

          【讨论】:

            猜你喜欢
            • 2016-10-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-10-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多