2017-12-30 15 views
-1

Facebook Graph를 통해 Facebook 게시물을 가져 오는 앱을 만들었습니다. 모든 것은 내 휴대폰에서 훌륭하게 작동합니다 (Cubot Note S & & UMI Diamond).하지만 내 휴대폰 LG K10 (2017)에있는 다른 휴대 전화에서 앱을 열려고 할 때. 나는 오류가 발생합니다 : java.lang.NullPointerException: 그리고 왜, 첫 번째 휴대폰이 응용 프로그램이 아주 잘 작동 때문에 모르겠어요.Facebook Graph java.lang.NullPointerException

먼저 두 개의 전화 7.0이 6.0 안드로이드와 LG 될 수있다 : 여기

java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.gireada.***.Posts2.getData()' on a null object reference at com.gireada.***.MainActivity$3$1.onCompleted(MainActivity.java:153) 

라인

for (int i = 0; i < (variabila2.getPosts().getData().size()) - 1; i++) 

나는 그것이 나에게 오류를 제공 variabila2.getPosts()....에 액세스하려고 할 때마다입니다 이게 문제 야?

나는이 방법으로 GraphCall을했다 :

GraphRequest request = GraphRequest.newMeRequest(
           accessToken, 
           new GraphRequest.GraphJSONObjectCallback() { 
            @Override 
            public void onCompleted(
              JSONObject object, 
              GraphResponse response) { 
            System.out.println(object); 
            Log.d("Profil ", object.toString()); 


globalObject.setCurentToken(AccessToken.getCurrentAccessToken()); 
            String nome; 
             /*if (jObjResponse.has("name")) { 
              nome = 

jObjResponse.getString("name"); 
               globalObject.setNume(nome); 
              } 
              if (jObjResponse.has("id")) { 
               nome = jObjResponse.getString("id"); 
               globalObject.setID_User(nome); 
              }*/ 
              variabila2 = new Gson().fromJson(object.toString(), Variable2.class); 
    //           System.out.println(variabila2.getPosts().toString()); 
    //           Log.d("Link ", variabila2.getPosts().getData().get(0).getLink()); 
              for (int i = 0; i < (variabila2.getPosts().getData().size()) - 1; i++) 
              { 
               Log.d("Link ", variabila2.getPosts().getData().get(i).getLink()); 
               if (variabila2.getPosts().getData().get(i).getCreated_time() != null) 
                globalObject.setCreated_global(variabila2.getPosts().getData().get(i).getCreated_time(), i); 
               else 
                globalObject.setCreated_global(null, i); 

               globalObject.setLink_global(variabila2.getPosts().getData().get(i).getLink(), i); 
               Log.d("Link Personal", variabila2.getPosts().getData().get(i).getLink()); 
               if (variabila2.getPosts().getData().get(i).getFull_picture() != null) 
                globalObject.setLink_pictures(variabila2.getPosts().getData().get(i).getFull_picture(), i); 
               else 
                globalObject.setLink_pictures(null, i); 
              } 
             } 
            }); 
          Bundle parameters = new Bundle(); 
          parameters.putString("fields", "id,name,posts.limit(100){link,created_time,description,full_picture}"); 
          request.setParameters(parameters); 
          request.executeAsync(); 

**Variable2 class** 

    public class Variable2 
    { 
     public String status; 
     public Feed feed; 
     Posts2 posts; 
     Picture picture; 
     public Variable2(Posts2 posts2) { 
      this.posts = posts2; 
     } 
     public String getStatus() { 
      return status; 
     } 
     public void setStatus(String status) { 
      this.status = status; 
     } 
     public Feed getFeed() { 
      return feed; 
     } 
     public void setFeed(Feed feed) { 
      this.feed = feed; 
     } 
     public Posts2 getPosts() { 
      return posts; 
     } 
     public void setPosts(Posts2 posts) { 
      this.posts = posts; 
     } 
     public Picture getPicture() { 
      return picture; 
     } 
     public void setPicture(Picture picture) { 
      this.picture = picture; 
     } 
    } 

**Post2 class** 


    public class Posts2 { 
     public List<Item2> data; 

     public Posts2(List<Item2> data) { 
      this.data = data; 
     } 

     public List<Item2> getData() { 
      return data; 
     } 

     public void setData(List<Item2> data) { 
      this.data = data; 
     } 
    } 

**Item2 class** 

    public class Item2 { 
     public String link; 
     public String created_time; 
     public String full_picture; 
     public String description; 
     public String id; 
     public Item2(String link, String created_time, String description, String full_picture, String id) { 
      this.link = link; 
      this.created_time = created_time; 
      this.description = description; 
      this.full_picture = full_picture; 
      this.id = id; 
     } 

     public String getLink() { 
      return link; 
     } 

     public void setLink(String link) { 
      this.link = link; 
     } 

     public String getCreated_time() { 
      return created_time; 
     } 

     public void setCreated_time(String created_time) { 
      this.created_time = created_time; 
     } 

     public String getDescription() { 
      return description; 
     } 

     public void setDescription(String description) { 
      this.description = description; 
     } 

     public String getFull_picture() { 
      return full_picture; 
     } 

     public void setFull_picture(String full_picture) { 
      this.full_picture = full_picture; 
     } 

     public String getId() { 
      return id; 
     } 

     public void setId(String id) { 
      this.id = id; 
     } 

    } 

이 내 첫 휴대폰에서 작동하지만,이 휴대 전화에 (아마도 다른 휴대 전화에하는)가 작동하지 않습니다.

이 문제에 관해 알고 싶다면 도와주세요.

+0

여기에 json 응답을 추가하십시오. –

+0

{ "id": "2016399981939546", "name": "Grigore Saveluc Rodica"}. 이제 왜 내가 널 포인트를 주는지 알 겠어. 근데 왜이 전화에 나 한테 전화하지 않는거야? Cubot : { "id": "1813718138656862", "이름": "Iulian Grigore", "posts": { "데이터": [{ "링크": "https : \/\/www.facebook.com \ BananaGiveaway \/phot ...... – Gireada

+0

귀하의 답변 ** variabila2 **는 jsonarray가 아닙니다.이 JSONObject입니다. –

답변

0

답변을 찾았습니다. 로그인 버튼에 모든 퍼미션을 넣지 않습니다.

LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("user_posts", "public_profile", "email")); 

귀하의 도움에 감사드립니다. 그래서 몇 가지 데이터 만 얻습니다.

{"id":"2016399981939546","name":"Grigore Saveluc Rodica"}