Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android无法获取对服务器的改型API调用_Java_Android_Android Fragments_Retrofit - Fatal编程技术网

Java Android无法获取对服务器的改型API调用

Java Android无法获取对服务器的改型API调用,java,android,android-fragments,retrofit,Java,Android,Android Fragments,Retrofit,我正在做一个Android项目。我正在使用改型来调用API。因此,我正在进行一个API调用,以获取与证书相关的课程列表 来自服务器get(BASE_URL/certificates/1)的响应为: 我有证书列表,需要采取的行动是,单击证书后,它应该进入新的片段,该片段包含与此证书相关的所有课程(单击)。为此,我进行了上述API调用 问题是,当我单击列表中的第一个证书时,它会转到下一个片段并列出所有课程。但是,当我单击任何其他证书时,它会显示空白片段。调试代码时,在fetchCourses()Co

我正在做一个Android项目。我正在使用改型来调用API。因此,我正在进行一个API调用,以获取与证书相关的课程列表

来自服务器get(BASE_URL/certificates/1)的响应为:

我有证书列表,需要采取的行动是,单击证书后,它应该进入新的片段,该片段包含与此证书相关的所有课程(单击)。为此,我进行了上述API调用

问题是,当我单击列表中的第一个证书时,它会转到下一个片段并列出所有课程。但是,当我单击任何其他证书时,它会显示空白片段。调试代码时,在fetchCourses()CoursesListOfCertificatesFragment.java中调用onFailure()函数

工作流是CertificateFragment是列出所有证书的类。单击后,CertificateFragment中的CertificateClickListner()将被触发,并依次启动CoursesListOfCertificatesFragment,其中证书对象传递到此片段的构造函数中。这里我进行API调用GET(BASE_URL/certificates/1)

这在CoursesListOfCertificatesFragment的fetchCourses()中。但除了第一个证书外,调用了onFailure()方法

感谢您的帮助。。。。。如果需要任何其他信息,请询问

谢谢

以下是列出的相关类别:

CoursesListOfCertificatesFragment.java

package com.localjini.learner.fragments;

import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.localjini.learner.R;
import com.localjini.learner.adapters.CourseListingRVAdapter;
import com.localjini.learner.api.RestClient;
import com.localjini.learner.main.HomeActivity;
import com.localjini.learner.models.Certificates;
import com.localjini.learner.models.Course;
import com.localjini.learner.models.CoursesResponse;
import com.localjini.learner.models.GetCertificateResponse;
import com.localjini.learner.utils.LogUtils;
import com.localjini.learner.utils.UIHelper;

import java.util.List;

import butterknife.Bind;
import butterknife.ButterKnife;
import retrofit.Call;
import retrofit.Callback;
import retrofit.Response;
import retrofit.Retrofit;


public class CoursesListOfCertificatesFragment extends BaseFragment {

    @Bind(R.id.tv_category)
    TextView tvCategory;
    @Bind(R.id.tv_sort_filter)
    TextView tvSortFilter;
    @Bind(R.id.pb_course_listing)
    ProgressBar pbCourseListing;
    @Bind(R.id.rv_course_listing)
    RecyclerView rvCourseListing;

    public UIHelper uiHelper;
    List<Course> courses;

    private Certificates certificate;
    private int certificate_id;

    public CoursesListOfCertificatesFragment(){

    }

    private CourseListingRVAdapter.CourseClickListener listener = new CourseListingRVAdapter.CourseClickListener() {

        @Override
        public void onCourseClicked(Course course) {
            interactionListener.launchCourseDetailFragment();
        }
    };

    public CoursesListOfCertificatesFragment(Certificates certificate){
        this.certificate = certificate;
        this.certificate_id = certificate.getId();
    }

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        if (root == null) {
            root = (ViewGroup) inflater.inflate(R.layout.fragment_course_listing, container, false);

            ButterKnife.bind(this, root);

            initInstances();

            fetchCourses();
        }


        return root;
    }

    private void initInstances() {
        uiHelper = new UIHelper(getActivity());

        ((HomeActivity) getActivity()).getSupportActionBar().setHomeButtonEnabled(true);
        ((HomeActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        ((HomeActivity) getActivity()).getSupportActionBar().setTitle("");

        rvCourseListing.setItemAnimator(new DefaultItemAnimator());
        rvCourseListing.setLayoutManager(new LinearLayoutManager(getActivity()));
        rvCourseListing.setHasFixedSize(true);
    }

    private void fetchCourses() {
        Call<GetCertificateResponse> call = RestClient.getCMSServiceInstance().getCertificateById(certificate_id);
        call.enqueue(new Callback<GetCertificateResponse>() {
            @Override
            public void onResponse(Response<GetCertificateResponse> response, Retrofit retrofit) {

                if (response != null) {
                    GetCertificateResponse resp = response.body();

                    if (resp != null) {
                        showCourses(resp.getCourses());
                    } else {
                        uiHelper.showToast("response contain null data");
                    }
                }
            }

            @Override
            public void onFailure(Throwable t) {
                LogUtils.d("coursesFailed", t.getMessage());
            }
        });

    }

    private void showCourses(List<Course> courses) {
        if(courses != null) {
            CourseListingRVAdapter courseListingRVAdapter = new CourseListingRVAdapter(getActivity(), courses);
            courseListingRVAdapter.setCourseClickListener(listener);
            rvCourseListing.setAdapter(courseListingRVAdapter);
        }
    }

    public FragmentId getFragmentId() {
        return FragmentId.COURSE_LISTING_FRAGMENT;
    }

}
public class CertificateFragment extends BaseFragment {

    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";
    //protected ViewGroup root;
    protected Context context;
    @Bind(R.id.rv_Certificates) RecyclerView rvCertificates;

    private CertificateRVAdapter.CertificateClickListener listener = new CertificateRVAdapter.CertificateClickListener() {

        @Override
        public void onCertificateClicked(Certificates certificate) {
            Toast.makeText(getActivity(), certificate.getName() +" Clicked", Toast.LENGTH_SHORT).show();
            //interactionListener.launchCourseListingFragment();
            interactionListener.launchCoursesListOfCertificatesFragment(certificate);
        }
    };


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        if(root==null) {

            root = (ViewGroup) inflater.inflate(R.layout.fragment_certificate, container, false);
            ButterKnife.bind(this, root);

            initInstances();
            getCertificates();
        }
        return root;
    }
//    rvCourseListing.setItemAnimator(new DefaultItemAnimator());
//    rvCourseListing.setLayoutManager(new LinearLayoutManager(getActivity()));
//    rvCourseListing.setHasFixedSize(true);
//

    private void initInstances() {
        //uiHelper = new UIHelper(getActivity());

        ((HomeActivity) getActivity()).getSupportActionBar().setHomeButtonEnabled(true);
        ((HomeActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        ((HomeActivity) getActivity()).getSupportActionBar().setTitle("");

        rvCertificates.setItemAnimator(new DefaultItemAnimator());
        rvCertificates.setLayoutManager(new LinearLayoutManager(getActivity()));
        rvCertificates.setHasFixedSize(true);
    }

    private void getCertificates() {

        Call<AllCertificateResponse> call = RestClient.getCMSServiceInstance().getCertificates();

        call.enqueue(new Callback<AllCertificateResponse>() {
            @Override
            public void onResponse(Response<AllCertificateResponse> response, Retrofit retrofit) {
                if (response.isSuccess()) {
                    //com.squareup.okhttp.Response raw = response.body().raw();

                    List<Certificates> certificates = response.body().getCertificates();
                    if (certificates != null)
                        showCertificates(certificates);

                    Toast.makeText(getActivity(), "Success in getting certificates", Toast.LENGTH_SHORT).show();
                } else {
                    Log.d("CERT", "response is failure");
                }
            }

            @Override
            public void onFailure(Throwable t) {
                Toast.makeText(getActivity(), "Failure", Toast.LENGTH_SHORT).show();
            }

        });
    }

    public void showCertificates(List<Certificates> certificates){

        CertificateRVAdapter adapter = new CertificateRVAdapter(getActivity(), certificates);
        adapter.setCertificateClickListener(listener);
        rvCertificates.setAdapter(adapter);
    }

    public FragmentId getFragmentId() {
        return FragmentId.COURSE_LISTING_FRAGMENT;
    }

}
package com.localjini.learner.fragments;
导入android.os.Bundle;
导入android.support.v7.widget.DefaultItemAnimator;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ProgressBar;
导入android.widget.TextView;
导入com.localjini.learner.R;
导入com.localjini.learner.adapters.CourselistingrAdapter;
导入com.localjini.learner.api.RestClient;
导入com.localjini.learner.main.HomeActivity;
导入com.localjini.learner.models.Certificates;
导入com.localjini.learner.models.Course;
导入com.localjini.learner.models.courseResponse;
导入com.localjini.learner.models.GetCertificateResponse;
导入com.localjini.learner.utils.LogUtils;
导入com.localjini.learner.utils.UIHelper;
导入java.util.List;
进口毛刀。装订;
进口毛刀,毛刀;
进口改装。电话;
进口改装.回收;
进口改装.响应;
进口改装。改装;
公共类课程证书列表片段扩展BaseFragment{
@绑定(R.id.tv\U类别)
文本视图类别;
@绑定(R.id.tv\u排序\u过滤器)
文本视图tvSortFilter;
@绑定(R.id.pb\u课程列表)
课程列表;
@绑定(R.id.rv\U课程\U列表)
回收利用和物流配送;
公共UIHelper UIHelper;
列出课程;
私人证书;
私有int证书\u id;
公共课程证书列表片段(){
}
私有courseListingrAdapter.CourseClickListener侦听器=新courseListingrAdapter.CourseClickListener(){
@凌驾
已单击公共无效OnCourse(课程){
interactionListener.launchCourseDetailFragment();
}
};
公共课程证书列表片段(证书){
本证书=证书;
this.certificate_id=certificate.getId();
}
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
if(root==null){
根=(视图组)充气器。充气(R.layout.fragment\u course\u列表,容器,false);
把(这个,根)绑起来;
initInstances();
获取课程();
}
返回根;
}
私有void initInstances(){
uiHelper=新的uiHelper(getActivity());
((HomeActivity)getActivity()).getSupportActionBar().setHomeButtonEnabled(true);
((HomeActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
((HomeActivity)getActivity()).getSupportActionBar().setTitle(“”);
rvCourseListing.setItemAnimator(新的DefaultItemAnimator());
rvCourseListing.setLayoutManager(新的LinearLayoutManager(getActivity());
rvCourseListing.setHasFixedSize(真);
}
私人课程(){
Call Call=RestClient.getCMSServiceInstance().getCertificateById(证书id);
call.enqueue(新回调(){
@凌驾
公共响应(响应、改装){
if(响应!=null){
GetCertificateResponse resp=response.body();
如果(resp!=null){
showCourses(分别为getCourses());
}否则{
showtoos(“响应包含空数据”);
}
}
}
@凌驾
失效时的公共无效(可丢弃的t){
LogUtils.d(“coursesFailed”,t.getMessage());
}
});
}
私人课程(列出课程){
如果(课程!=null){
CourselistingrAdapter CourselistingrAdapter=新CourselistingrAdapter(getActivity(),courses);
courseListingrAdapter.setCourseClickListener(侦听器);
rvCourseListing.setAdapter(courseListingrAdapter);
}
}
公共FragmentId getFragmentId(){
返回FragmentId.COURSE\u list\u FRAGMENT;
}
}
CertificateFragment.java

package com.localjini.learner.fragments;

import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.localjini.learner.R;
import com.localjini.learner.adapters.CourseListingRVAdapter;
import com.localjini.learner.api.RestClient;
import com.localjini.learner.main.HomeActivity;
import com.localjini.learner.models.Certificates;
import com.localjini.learner.models.Course;
import com.localjini.learner.models.CoursesResponse;
import com.localjini.learner.models.GetCertificateResponse;
import com.localjini.learner.utils.LogUtils;
import com.localjini.learner.utils.UIHelper;

import java.util.List;

import butterknife.Bind;
import butterknife.ButterKnife;
import retrofit.Call;
import retrofit.Callback;
import retrofit.Response;
import retrofit.Retrofit;


public class CoursesListOfCertificatesFragment extends BaseFragment {

    @Bind(R.id.tv_category)
    TextView tvCategory;
    @Bind(R.id.tv_sort_filter)
    TextView tvSortFilter;
    @Bind(R.id.pb_course_listing)
    ProgressBar pbCourseListing;
    @Bind(R.id.rv_course_listing)
    RecyclerView rvCourseListing;

    public UIHelper uiHelper;
    List<Course> courses;

    private Certificates certificate;
    private int certificate_id;

    public CoursesListOfCertificatesFragment(){

    }

    private CourseListingRVAdapter.CourseClickListener listener = new CourseListingRVAdapter.CourseClickListener() {

        @Override
        public void onCourseClicked(Course course) {
            interactionListener.launchCourseDetailFragment();
        }
    };

    public CoursesListOfCertificatesFragment(Certificates certificate){
        this.certificate = certificate;
        this.certificate_id = certificate.getId();
    }

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        if (root == null) {
            root = (ViewGroup) inflater.inflate(R.layout.fragment_course_listing, container, false);

            ButterKnife.bind(this, root);

            initInstances();

            fetchCourses();
        }


        return root;
    }

    private void initInstances() {
        uiHelper = new UIHelper(getActivity());

        ((HomeActivity) getActivity()).getSupportActionBar().setHomeButtonEnabled(true);
        ((HomeActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        ((HomeActivity) getActivity()).getSupportActionBar().setTitle("");

        rvCourseListing.setItemAnimator(new DefaultItemAnimator());
        rvCourseListing.setLayoutManager(new LinearLayoutManager(getActivity()));
        rvCourseListing.setHasFixedSize(true);
    }

    private void fetchCourses() {
        Call<GetCertificateResponse> call = RestClient.getCMSServiceInstance().getCertificateById(certificate_id);
        call.enqueue(new Callback<GetCertificateResponse>() {
            @Override
            public void onResponse(Response<GetCertificateResponse> response, Retrofit retrofit) {

                if (response != null) {
                    GetCertificateResponse resp = response.body();

                    if (resp != null) {
                        showCourses(resp.getCourses());
                    } else {
                        uiHelper.showToast("response contain null data");
                    }
                }
            }

            @Override
            public void onFailure(Throwable t) {
                LogUtils.d("coursesFailed", t.getMessage());
            }
        });

    }

    private void showCourses(List<Course> courses) {
        if(courses != null) {
            CourseListingRVAdapter courseListingRVAdapter = new CourseListingRVAdapter(getActivity(), courses);
            courseListingRVAdapter.setCourseClickListener(listener);
            rvCourseListing.setAdapter(courseListingRVAdapter);
        }
    }

    public FragmentId getFragmentId() {
        return FragmentId.COURSE_LISTING_FRAGMENT;
    }

}
public class CertificateFragment extends BaseFragment {

    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";
    //protected ViewGroup root;
    protected Context context;
    @Bind(R.id.rv_Certificates) RecyclerView rvCertificates;

    private CertificateRVAdapter.CertificateClickListener listener = new CertificateRVAdapter.CertificateClickListener() {

        @Override
        public void onCertificateClicked(Certificates certificate) {
            Toast.makeText(getActivity(), certificate.getName() +" Clicked", Toast.LENGTH_SHORT).show();
            //interactionListener.launchCourseListingFragment();
            interactionListener.launchCoursesListOfCertificatesFragment(certificate);
        }
    };


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        if(root==null) {

            root = (ViewGroup) inflater.inflate(R.layout.fragment_certificate, container, false);
            ButterKnife.bind(this, root);

            initInstances();
            getCertificates();
        }
        return root;
    }
//    rvCourseListing.setItemAnimator(new DefaultItemAnimator());
//    rvCourseListing.setLayoutManager(new LinearLayoutManager(getActivity()));
//    rvCourseListing.setHasFixedSize(true);
//

    private void initInstances() {
        //uiHelper = new UIHelper(getActivity());

        ((HomeActivity) getActivity()).getSupportActionBar().setHomeButtonEnabled(true);
        ((HomeActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        ((HomeActivity) getActivity()).getSupportActionBar().setTitle("");

        rvCertificates.setItemAnimator(new DefaultItemAnimator());
        rvCertificates.setLayoutManager(new LinearLayoutManager(getActivity()));
        rvCertificates.setHasFixedSize(true);
    }

    private void getCertificates() {

        Call<AllCertificateResponse> call = RestClient.getCMSServiceInstance().getCertificates();

        call.enqueue(new Callback<AllCertificateResponse>() {
            @Override
            public void onResponse(Response<AllCertificateResponse> response, Retrofit retrofit) {
                if (response.isSuccess()) {
                    //com.squareup.okhttp.Response raw = response.body().raw();

                    List<Certificates> certificates = response.body().getCertificates();
                    if (certificates != null)
                        showCertificates(certificates);

                    Toast.makeText(getActivity(), "Success in getting certificates", Toast.LENGTH_SHORT).show();
                } else {
                    Log.d("CERT", "response is failure");
                }
            }

            @Override
            public void onFailure(Throwable t) {
                Toast.makeText(getActivity(), "Failure", Toast.LENGTH_SHORT).show();
            }

        });
    }

    public void showCertificates(List<Certificates> certificates){

        CertificateRVAdapter adapter = new CertificateRVAdapter(getActivity(), certificates);
        adapter.setCertificateClickListener(listener);
        rvCertificates.setAdapter(adapter);
    }

    public FragmentId getFragmentId() {
        return FragmentId.COURSE_LISTING_FRAGMENT;
    }

}
公共类CertificateFlagment扩展了BaseFragment{
私有静态最终字符串ARG_PARAM1=“PARAM1”;
私有静态最终字符串ARG_PARAM2=“PARAM2”;
//受保护的视图组根;
受保护的