如何在onCreateView Android中调用方法

时间:2017-06-07 15:05:01

标签: java android methods fragment retrofit

如何在android Fragment中的onCreateView中调用方法?

onCreateView代码:

 public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         final Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.fragment_user_list, container, false);
    btnBusquedaUserList = (Button) rootView.findViewById(R.id.btnBuscarUserList);
    rvUserList = (RecyclerView) rootView.findViewById(R.id.rvUserList);
    rvUserList.setLayoutManager(new LinearLayoutManager(getContext()));
    txtCIbusqueda = (TextInputEditText) rootView.findViewById(R.id.txtCIUserList);

    getActivity().setTitle("Lista Usuarios Check In");
    Bundle args = getArguments();
    idUsuario = args.getString("idLogueado");

    GetClient();

    btnBusquedaUserList.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ciUser = txtCIbusqueda.getText().toString();
            Object lista[] = new Object[2];
            lista[0] = ciUser;
            lista[1] = idUsuario;
            parametroApi.setDatoG(lista);
            GetClient();

        }
    });

    return rootView;


};

我的方法GetClient()

public void GetClient() {
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("http://80.241.210.8:8080/Exma/Service/api/")
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    ExmaApi service = retrofit.create(ExmaApi.class);
    Call<Respuesta<List<DataList>>>call=service.putClientList(parametroApi);

       call.enqueue(new Callback<Respuesta<List<DataList>>>() {
        @Override
        public void onResponse(Call<Respuesta<List<DataList>>> call, 
         Response<Respuesta<List<DataList>>> response) {
            if (response.isSuccessful()) {
                Respuesta<List<DataList>> respuesta = response.body();
                try {
                    if (respuesta.respuestaExitosa() == true) {
                        Log.d(TAG, "TodoBien: " + respuesta.toString());
                        rvAdapter = new MyRecyclerViewAdapter(getActivity().getApplicationContext(), respuesta);
                        rvUserList.setAdapter(rvAdapter);

                    }

                } catch (Exception e) {
                    Log.d(TAG, "onResponse" + "Ocurrio un Error");
                    e.printStackTrace();

                }
            }
        }

        @Override
        public void onFailure(Call<Respuesta<List<DataList>>> call, Throwable t) {
            Log.d(TAG, "TodoMal: " + t.getMessage().toString());

        }
    });


}

我想在GetClient()中调用方法onCreateView时遇到问题,方法无法启动,但是在按钮的onClickListener中,方法启动没有问题,任何调用方法的方法?在来自onCreateView的{​​{1}}中,我想在片段开始时执行该方法

1 个答案:

答案 0 :(得分:1)

与活动类似,片段有自己的lifecycle

  

onCreateView :调用此片段实例化其用户界面视图。这是可选的,非图形片段可以   return null(这是默认实现)。这将被称为   在onCreate(Bundle)和onActivityCreated(Bundle)之间。

因此,您应该移动与onStart()中的图形元素无关的所有初始化。例如:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         final Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.fragment_user_list, container, false);
    btnBusquedaUserList = (Button) rootView.findViewById(R.id.btnBuscarUserList);
    rvUserList = (RecyclerView) rootView.findViewById(R.id.rvUserList);
    rvUserList.setLayoutManager(new LinearLayoutManager(getContext()));
    txtCIbusqueda = (TextInputEditText) rootView.findViewById(R.id.txtCIUserList);

    return rootView;
};

@Override
public void onStart() {

    getActivity().setTitle("Lista Usuarios Check In");
    Bundle args = getArguments();
    idUsuario = args.getString("idLogueado");
    GetClient();

    btnBusquedaUserList.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ciUser = txtCIbusqueda.getText().toString();
            Object lista[] = new Object[2];
            lista[0] = ciUser;
            lista[1] = idUsuario;
            parametroApi.setDatoG(lista);
            GetClient();

        }
    });
}

希望这有帮助。

抱歉我的英文。