Android 安卓尝试调用虚拟方法';int java.lang.String.length()';关于空对象引用
我正在尝试将我的应用程序与社交网络(facebook)集成,这里需要一些帮助。我正在试着吃东西。当我运行应用程序时,我得到一个致命的异常错误Android 安卓尝试调用虚拟方法';int java.lang.String.length()';关于空对象引用,android,facebook-graph-api,Android,Facebook Graph Api,我正在尝试将我的应用程序与社交网络(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
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)
致命异常:main
进程:com.example.vladzakharo.facebookapp,PID:2428
java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“int java.lang.String.length()”
位于org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
位于org.json.JSONTokener.nextValue(JSONTokener.java:94)
位于org.json.JSONObject(JSONObject.java:156)
位于org.json.JSONObject(JSONObject.java:173)
位于com.example.vladzakharo.facebookapp.CentralActivity$2.onCompleted(CentralActivity.java:88)
在com.facebook.GraphRequest$5.run(GraphRequest.java:1379)
位于android.os.Handler.handleCallback(Handler.java:739)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:148)
位于android.app.ActivityThread.main(ActivityThread.java:5417)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:726)
位于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);
}
公共类中心性扩展了AppCompativity活动{
按钮btnPublish;
列表视图列表视图;
公共阵列列表;
公共字符串消息;
公共字符串名称;
公共字符串标题;
公共字符串描述;
公共字符串图片;
公共字符串链接;
公共字符串Id;
公共静态最终字符串MESSAGE=“MESSAGE”;
公共静态最终字符串NAME=“NAME”;
公共静态最终字符串CAPTION=“CAPTION”;
公共静态最终字符串DESCRIPTION=“DESCRIPTION”;
公共静态最终字符串PICTURE=“PICTURE”;
公共静态最终字符串LINK=“LINK”;
公共静态最终字符串ID=“ID”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
sdkinInitialize(getApplicationContext());
setContentView(R.layout.activity_central);
列表=新的ArrayList();
listView=(listView)findViewById(R.id.listView);
btnPublish=(按钮)findViewById(R.id.btnPublish);
btnPublish.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
发布();
}
});
getFeed();
}
私有无效发布(){
Intent goPublish=新的Intent(CentralActivity.this,PublishActivity.class);
星触觉(goPublish);
}
受保护的void getFeed(){
新格力探索(
AccessToken.getCurrentAccessToken(),
“me/feed?字段=消息、名称、标题、描述、图片、链接”,
无效的
HttpMethod.GET,
新建GraphRequest.Callback(){
@凌驾
未完成公共空白(图形响应){
JSONObject json;
试一试{
json=新的JSONObject(response.getRawResponse());
JSONArray jArray=json.getJSONArray(“数据”);
for(int i=0;i
}您应该查看第88行(参见Stasktrace:
位于com.example.vladzakharo.facebookapp.CentralActivity$2.onCompleted(CentralActivity.java:88)
,您可以从以下字符串中获得:
jArray.getJSONObject(i).get("xxx")
很可能返回null,导致NPE
也可能是
jArray.getJSONObject(i)
返回空值。您应该查看第88行(请参见Stasktrace:
位于com.example.vladzakharo.facebookapp.CentralActivity$2.onCompleted(CentralActivity.java:88)
,您可以从以下字符串中获得:
jArray.getJSONObject(i).get("xxx")
很可能返回null,导致NPE
也可能是
jArray.getJSONObject(i)
返回null