public String load_Data(){
           OkHttpUtils.get()
                   .url("https://news-at.zhihu.com/api/4/news/latest")
                   . build()
                   .execute(new StringCallback() {
                       @Override
                       public void onError(Call call, Exception e, int i) {
                       }
                       @Override
                       public void onResponse(String s, int i) {
                           Gson gson=new Gson();
                           NewMsg_Entity n=gson.fromJson(s,NewMsg_Entity.class);
                           result_Story=n.getStories();
                           result_TopStory=n.getTop_stories();
                           Log.d("abc",result_TopStory.get(0).getTitle());
                       }
                   });
                  return result_TopStory.get(0).getTitle();
       }
我定义的全局变量
List<NewMsg_Entity.Top_stories> result_TopStory;输出Log.d的时候没报错
为什么return的时候就报空指针错误?

解决方案 »

  1.   

    if (TopStory.size() > 0){
    System.out.println(result_TopStory.get(0));
    }else{
     System.err.println("list 为空");
    }
      

  2.   

    当为空是你还用这个空对象去get,肯定会空指针
      

  3.   

    log.d没报可能是它没有运行呢
      

  4.   

    可能情况有两种,1:程序没有走到onResponse中去,导致全局变量未初始化。
    2. 已经进入到onResponse方法中,但是赋了一个null值也是有可能吧。自己好好排查下吧,一般这样的,如果逻辑没什么问题,就debug,自己慢慢调试,看看那里出问题了
      

  5.   

    程序是走到onResponse里面了
    Log.d是可以正确输出 而且可以输出list的对应值08-14 14:14:31.107 16131-16131/app.wx.com.myapplication_one D/abc: https://pic1.zhimg.com/v2-2667112cea664ca11a549cac07c8e50c.jpg但是在onResponse这个方法外面
    我再去引用 result_Topstory就会报空指针FATAL EXCEPTION: main
                                                                                  java.lang.NullPointerException
                                                                                      at fragment.NewsView_Fragment.load_Data(NewsView_Fragment.java:83)
                                                                                      at fragment.NewsView_Fragment.onCreateView(NewsView_Fragment.java:53)53行  是调用这个函数 load_Data();
    83是引用 了result_Topstory
      

  6.   

    result_TopStory这个为null,进onResponse中调试下,看看result_TopStory的值
      

  7.   

    放全局变量啊,兄弟   result_TopStory  创建的地方有问题啊
      

  8.   

    public class NewsView_Fragment extends Fragment {
        List<NewMsg_Entity.Stories> result_Story;
        List<NewMsg_Entity.Top_stories> result_TopStory;
        List<String>TopStroy_Image;
        RecyclerView recyclerView;
        NewsAdatper adatper; 我设的是全局变量啊
      

  9.   

    在response方法里面   我试着输出  result_TopStory  的值 是可以正确输出的
    但是在response方法外面  一引用 result_TopStory  的值 会报空指针