FragmentHome.this中的问题,因为在Activity中它接受ActivityName.this,但是在片断中,它显示了我尝试过getContext的问题,而getActivity显示了错误,我当时没有将值传递给回收视图
public class FragmentHome extends Fragment {
private Fragment homefragment;
public static final String BASE_URL = "http://10.0.2.2:3000";
// product layout ....
private RecyclerView recyclerView;
//List<Product> productList = new ArrayList<>();
public FragmentHome() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
//prouct view..code ...
recyclerView = view.findViewById(R.id.showProducts);
//making method for getting all products ...
getAllProducts();
return view;
}
private void getAllProducts(){
Register register = ApiUrl.getInstance().create(Register.class);
Call<List<Product>> productlist = register.getProducts(ApiUrl.session);
productlist.enqueue(new Callback<List<Product>>() {
@Override
public void onResponse(Call<List<Product>> call, Response<List<Product>> response) {
if (!response.isSuccessful()) {
Toast.makeText(getActivity(), "Code " + response.code(), Toast.LENGTH_SHORT).show();
return;
}
List<Product> productList = response.body();
//Pass List to the Adapter class
ProductAaptor productAaptor = new ProductAaptor(productList, FragmentHome.this);
recyclerView.setAdapter(productAaptor);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
}
@Override
public void onFailure(Call<List<Product>> call, Throwable t) {
Toast.makeText(getContext(), "Error : " + t.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
}
});
}
答案 0 :(得分:0)
[基本答案来自https://stackoverflow.com/a/52732620/9819031]
您可以使用onAttach()
方法访问片段的上下文
private Context mContext;
public FragmentHome() {
// Required empty public constructor
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
mContext=context;
}
然后,您可以使用mContext
参数来访问Fragment的上下文。