gpt4 book ai didi

java - 如何在 onCreateView Android 中调用方法

转载 作者:行者123 更新时间:2023-11-29 00:03:34 24 4
gpt4 key购买 nike

如何在 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());

}
});


}

当我想在 onCreateView 中调用方法 GetClient() 时遇到问题,该方法没有启动,但是在按钮的 onClickListener 中,该方法没有启动问题,有什么方法可以调用方法吗?在 FragmentsonCreateView 中,我想在 fragment 开始时执行该方法

最佳答案

喜欢Activity,Fragment有自己的lifecycle

onCreateView : Called to have the fragment instantiate its user interface view. This is optional, and non-graphical fragments can return null (which is the default implementation). This will be called between onCreate(Bundle) and 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();

}
});
}

希望这对您有所帮助。

对不起我的英语。

关于java - 如何在 onCreateView Android 中调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44416378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com