如何在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}}中,我想在片段开始时执行该方法
答案 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();
}
});
}
希望这有帮助。
抱歉我的英文。