安卓。尝试在空对象引用上调用虚拟方法'int java.lang.String.length()'

Vinz_B

我正在尝试将我的应用程序与社交网络(facebook)集成在一起,并且在这里需要一些帮助。我正在尝试获取我的提要。运行应用程序时,出现致命异常错误。

FATAL EXCEPTION: main
Process: com.example.vladzakharo.facebookapp, PID: 2428
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
     at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
     at org.json.JSONTokener.nextValue(JSONTokener.java:94)
     at org.json.JSONObject.<init>(JSONObject.java:156)
     at org.json.JSONObject.<init>(JSONObject.java:173)
     at com.example.vladzakharo.facebookapp.CentralActivity$2.onCompleted(CentralActivity.java:88)
     at com.facebook.GraphRequest$5.run(GraphRequest.java:1379)
     at android.os.Handler.handleCallback(Handler.java:739)
     at android.os.Handler.dispatchMessage(Handler.java:95)
     at android.os.Looper.loop(Looper.java:148)
     at android.app.ActivityThread.main(ActivityThread.java:5417)
     at java.lang.reflect.Method.invoke(Native Method)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

所以这是我的课

public class CentralActivity extends AppCompatActivity {

Button btnPublish;
ListView listView;
public ArrayList<HashMap<String, String>> list;
public String Message;
public  String Name;
public String Caption;
public String Description;
public String Picture;
public String Link;
public String Id;

public static final String MESSAGE = "message";
public static final String NAME = "name";
public static final String CAPTION = "caption";
public static final String DESCRIPTION = "description";
public static final String PICTURE = "picture";
public static final String LINK = "link";
public static final String ID = "id";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getApplicationContext());
    setContentView(R.layout.activity_central);

    list = new ArrayList<>();
    listView = (ListView) findViewById(R.id.listView);
    btnPublish = (Button) findViewById(R.id.btnPublish);
    btnPublish.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Publish();
        }
    });

    getFeed();
}

private void Publish(){
    Intent goPublish = new Intent(CentralActivity.this, PublishActivity.class);
    startActivity(goPublish);
}

protected void getFeed(){
    new GraphRequest(
            AccessToken.getCurrentAccessToken(),
            "me/feed?fields=message,name,caption,description,picture,link",
            null,
            HttpMethod.GET,
            new GraphRequest.Callback() {
                @Override
                public void onCompleted(GraphResponse response) {
                    JSONObject json;
                    try{
                        json = new JSONObject(response.getRawResponse());
                        JSONArray jArray = json.getJSONArray("data");
                        for(int i = 0; i < jArray.length(); i++){
                            Message = jArray.getJSONObject(i).get("message").toString();
                            Name = jArray.getJSONObject(i).get("name").toString();
                            Caption = jArray.getJSONObject(i).get("caption").toString();
                            Description = jArray.getJSONObject(i).get("description").toString();
                            Picture = jArray.getJSONObject(i).get("picture").toString();
                            Link = jArray.getJSONObject(i).get("link").toString();
                            Id = jArray.getJSONObject(i).get("id").toString();

                            HashMap<String, String> hm = new HashMap<>();
                            hm.put(MESSAGE, Message);
                            hm.put(NAME, Name);
                            hm.put(CAPTION, Caption);
                            hm.put(DESCRIPTION, Description);
                            hm.put(PICTURE, Picture);
                            hm.put(LINK, Link);
                            hm.put(ID, Id);
                            list.add(hm);

                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }
    ).executeAsync();
    ListAdapter adapter = new SimpleAdapter(this, list, R.layout.list_item,
            new String[]{MESSAGE, NAME, CAPTION, DESCRIPTION },
            new int[]{R.id.text1, R.id.text2, R.id.text3, R.id.text4});
    listView.setAdapter(adapter);
}

}

托马斯五世

您应该看一下第88行(请参阅Stasktrace:,at com.example.vladzakharo.facebookapp.CentralActivity$2.onCompleted(CentralActivity.java:88) 它是从其中获得的字符串之一:

jArray.getJSONObject(i).get("xxx")

可能返回null,从而导致NPE。

可能也是

jArray.getJSONObject(i)

返回null。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

NullPointerException:尝试在空对象引用上调用虚拟方法'int java.lang.String.length()'

NullPointerException:尝试在空对象引用上调用虚拟方法'int java.lang.String.length()'

NullPointerException:尝试在空对象引用上调用虚拟方法'int java.lang.String.length()'

尝试在空对象引用上调用虚拟方法'int java.lang.String.length()'。无效的API地址崩溃

JSONArray 异常:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int java.lang.String.length()”

尝试在执行 Swiperrefresh Android 时在 Volley 上的空对象引用上调用虚拟方法“int java.lang.String.length()”

尝试在空对象引用上调用虚拟方法'android.content.Context.getSharedPreferences(java.lang.String,int)'

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int com.xxHelper.SharedPref.GetInt(java.lang.String)”

尝试在空对象引用上调用虚拟方法“int java.lang.Integer.intValue()”

尝试在空对象引用上调用虚拟方法“getSystemService(java.lang.String)”

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'int java.lang.Integer.intValue()'

com.android.volley.VolleyError:java.lang.NullPointerException:尝试在对象引用上调用虚拟方法“ java.lang.String.length()”

NullPointerException:尝试在空对象引用上调用虚拟方法'boolean java.lang.String.equalsIgnoreCase(java.lang.String)'

尝试在空对象引用上调用虚拟方法'java.lang.String java.lang.String.toUpperCase()'

原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'boolean java.lang.String.isEmpty()'

尝试在空对象引用上调用虚拟方法'boolean java.lang.String.contains(java.lang.CharSequence)'

java.lang.NullPointerException: 尝试在空对象引用上调用虚拟方法 (java.lang.String)'

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int java.io.InputStream.read(byte[])”

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.CardView.setVisibility(int)”

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'int android.view.View.getImportantForAccessibility()'

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'int android.view.ViewGroup.getPaddingLeft()'

NullPointerException:尝试在空对象引用上调用虚拟方法'java.lang.Object android.util.SparseArray.get(int)'

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“ void android.widget.ImageView.setImageResource(int)”

尝试在空对象引用上调用虚拟方法“java.lang.String okhttp3.ResponseBody.string()”

尝试在空对象引用上调用虚拟方法'java.lang.String android.content.Context.getPackageName()'

尝试在空对象引用上调用虚拟方法'java.lang.String com.activeandroid.TableInfo.getIdName()'

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“ java.lang.String java.lang.String.trim()”

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“ java.lang.String java.lang.Object.toString()”

Android:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“ java.lang.String java.lang.Object.toString()”