Javascript 从facebook导入Friendslist时出错
我尝试导入到应用程序中的friendslist有问题,这是错误:Javascript 从facebook导入Friendslist时出错,javascript,android,Javascript,Android,我尝试导入到应用程序中的friendslist有问题,这是错误: 04-15 15:09:08.361 13578-13578/com.sitepoint.facebook E/AndroidRuntime: FATAL EXCEPTION: main Process: com.sitepoint.facebook, PID: 13578 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.
04-15 15:09:08.361 13578-13578/com.sitepoint.facebook E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.sitepoint.facebook, PID: 13578
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sitepoint.facebook/com.project.you_first.FriendsActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
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)
Caused by: 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.JSONArray.<init>(JSONArray.java:92)
at org.json.JSONArray.<init>(JSONArray.java:108)
at com.project.you_first.FriendsActivity.onCreate(FriendsActivity.java:39)
at android.app.Activity.performCreate(Activity.java:6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
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)
我尝试使用的教程是,我扔了它,查看了已经完成的代码,但仍然得到了与这一行相同的错误:friendslist=new-JSONArray(jsondata)
private facebook callback callback=new facebook callback(){
@凌驾
成功时公共无效(LoginResult LoginResult){
Profile Profile=Profile.getCurrentProfile();
触觉(轮廓);
GraphRequestStatSyncTask GraphRequestStatSyncTask=新建GraphRequest(
loginResult.getAccessToken(),
//AccessToken.getCurrentAccessToken(),
“/我/朋友”,
无效的
HttpMethod.GET,
新建GraphRequest.Callback(){
未完成公共空白(图形响应){
意向意向=新意向(LoginActivity.this、MatchActivity.class);
试一试{
JSONArray rawName=response.getJSONObject().getJSONArray(“数据”);
intent.putExtra(“jsondata”,rawName.toString());
星触觉(意向);
}捕获(JSONException e){
e、 printStackTrace();
}
}
}
).executeAsync();
}
@凌驾
public void onCancel(){}
@凌驾
公共无效onError(FacebookException e){}
};
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
callbackManager.onActivityResult(请求代码、结果代码、数据);
}
LoginActivity中的代码,对我来说,意图没有问题它看起来像
jsonData
是空的。你应该检查你的意图,以确保你得到了你期望的所有价值。有什么想法吗??没什么用我也需要解决办法:(请有人帮帮我们。。。
public class FriendsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_friendslist);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Intent intent = getIntent();
String jsondata = intent.getStringExtra("jsondata");
JSONArray friendslist;
ArrayList<String> friends = new ArrayList<String>();
try {
friendslist = new JSONArray(jsondata);
for (int l=0; l < friendslist.length(); l++) {
friends.add(friendslist.getJSONObject(l).getString("name"));
}
} catch (JSONException e) {
e.printStackTrace();
}
ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.activity_listview, friends); // simple textview for list item
ListView listView = (ListView) findViewById(R.id.listView);
listView.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_login, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
logout();
return true;
}
return super.onOptionsItemSelected(item);
}
public void logout(){
Intent login = new Intent(FriendsActivity.this, LoginActivity.class);
startActivity(login);
LoginManager.getInstance().logOut();
finish();
}
}
private FacebookCallback<LoginResult> callback = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Profile profile = Profile.getCurrentProfile();
nextActivity(profile);
GraphRequestAsyncTask graphRequestAsyncTask = new GraphRequest(
loginResult.getAccessToken(),
//AccessToken.getCurrentAccessToken(),
"/me/friends",
null,
HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
Intent intent = new Intent(LoginActivity.this, MatchActivity.class);
try {
JSONArray rawName = response.getJSONObject().getJSONArray("data");
intent.putExtra("jsondata", rawName.toString());
startActivity(intent);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
).executeAsync();
}
@Override
public void onCancel() { }
@Override
public void onError(FacebookException e) { }
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}