FragmentHome.this中的问题如何解决

时间:2019-06-17 16:12:30

标签: java android

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();
            }
        });
    }

1 个答案:

答案 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的上下文。