2012-07-18 36 views
1

試圖從Facebook Graph API接收數據,但我似乎正在收到NullPointerException。有人可以幫忙嗎?這裏是我的xml和logCat輸出的活動文件。嘗試從Android Facebook SDK上檢索信息時強制關閉錯誤

package com.example.fbtest; 

//省略所有導入語句。

public class TestActivity extends Activity implements OnClickListener { 

String APP_ID; 
Facebook fb; 
private SharedPreferences sp; 
TextView tv; 
ImageView login; 
Button b; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test); 
    APP_ID = getString(R.string.APP_ID); 
    fb = new Facebook(APP_ID); 
    sp = getPreferences(MODE_PRIVATE); 
    String access_token = sp.getString("access_token", null); 
    long expires = sp.getLong("access_expires", 0); 

    if (access_token != null) { 
     fb.setAccessToken(access_token); 
    } 
    if (expires != 0) { 
     fb.setAccessExpires(expires); 
    } 

    login = (ImageView) findViewById(R.id.login); 
    login.setOnClickListener(this); 
    b=(Button)findViewById(R.id.button1); 
    b.setOnClickListener(this); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_test, menu); 
    return true; 
} 

private void post() { 
    if (fb.isSessionValid()) { 
     login.setImageResource(R.drawable.logout_button); 
     JSONObject obj; 
     try { 
      obj = Util.parseJson(fb.request("ronakshah")); 
      String id = obj.optString("id"); 
      String name = obj.optString("name"); 
      tv.setText("Welcome, " + name + id); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } catch (FacebookError fe) { 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch (v.getId()) { 
    case R.id.login: 

     if (fb.isSessionValid()) { 
      // button close our session - log out of facebook 
      try { 
       fb.logout(getApplicationContext()); 
      } catch (MalformedURLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } else { 
      // login to facebook 
      fb.authorize(TestActivity.this, new String[] { "email", 
        "read_stream" }, new DialogListener() { 

       public void onFacebookError(FacebookError e) { 
        // TODO Auto-generated method stub 
        Toast.makeText(TestActivity.this, "fbError", 
          Toast.LENGTH_SHORT).show(); 
       } 

       public void onError(DialogError e) { 
        // TODO Auto-generated method stub 
        Toast.makeText(TestActivity.this, "onError", 
          Toast.LENGTH_SHORT).show(); 
       } 

       public void onComplete(Bundle values) { 
        // TODO Auto-generated method stub 
        Editor editor = sp.edit(); 
        editor.putString("access_token", fb.getAccessToken()); 
        editor.putLong("access_expires", fb.getAccessExpires()); 
        editor.commit(); 
       } 

       public void onCancel() { 
        // TODO Auto-generated method stub 
        Toast.makeText(TestActivity.this, "onCancel", 
          Toast.LENGTH_SHORT).show(); 
       } 
      }); 
     } 
    case R.id.button1: 
     post(); 
    } 
} 

}

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="@dimen/padding_medium" 
    android:text="@string/hello_world" 
    tools:context=".TestActivity" /> 

<ImageView 
    android:id="@+id/login" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/login_button" 
    android:text="Button" /> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Button" /> 

的logcat:

07-18 14:10:42.636: I/dalvikvm(385): Jit: resizing JitTable from 512 to 1024 
07-18 14:10:47.216: D/dalvikvm(385): GC_CONCURRENT freed 555K, 52% free 2998K/6151K, external 908K/1038K, paused 9ms+8ms 
07-18 14:13:39.126: D/dalvikvm(385): GC_CONCURRENT freed 492K, 52% free 2988K/6151K, external 918K/1038K, paused 9ms+9ms 
07-18 14:13:39.235: D/webviewglue(385): nativeDestroy view: 0x270d38 
07-18 14:13:40.525: D/dalvikvm(385): GC_CONCURRENT freed 554K, 54% free 2867K/6151K, external 726K/1038K, paused 14ms+10ms 
07-18 14:13:41.395: D/AndroidRuntime(385): Shutting down VM 
07-18 14:13:41.395: W/dalvikvm(385): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
07-18 14:13:41.416: E/AndroidRuntime(385): FATAL EXCEPTION: main 
07-18 14:13:41.416: E/AndroidRuntime(385): java.lang.NullPointerException 
07-18 14:13:41.416: E/AndroidRuntime(385): at com.example.fbtest.TestActivity.post(TestActivity.java:73) 
07-18 14:13:41.416: E/AndroidRuntime(385): at com.example.fbtest.TestActivity.onClick(TestActivity.java:136) 
07-18 14:13:41.416: E/AndroidRuntime(385): at android.view.View.performClick(View.java:2485) 
07-18 14:13:41.416: E/AndroidRuntime(385): at android.view.View$PerformClick.run(View.java:9080) 
07-18 14:13:41.416: E/AndroidRuntime(385): at android.os.Handler.handleCallback(Handler.java:587) 
07-18 14:13:41.416: E/AndroidRuntime(385): at android.os.Handler.dispatchMessage(Handler.java:92) 
07-18 14:13:41.416: E/AndroidRuntime(385): at android.os.Looper.loop(Looper.java:123) 
07-18 14:13:41.416: E/AndroidRuntime(385): at android.app.ActivityThread.main(ActivityThread.java:3683) 
07-18 14:13:41.416: E/AndroidRuntime(385): at java.lang.reflect.Method.invokeNative(Native Method) 
07-18 14:13:41.416: E/AndroidRuntime(385): at java.lang.reflect.Method.invoke(Method.java:507) 
07-18 14:13:41.416: E/AndroidRuntime(385): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
07-18 14:13:41.416: E/AndroidRuntime(385): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
07-18 14:13:41.416: E/AndroidRuntime(385): at dalvik.system.NativeStart.main(Native Method) 

提前感謝!

+0

下一次還請提示拋出異常的語句,因爲我們無法僅通過信息'TestActivity.java:73'知道這一點。 – 2012-07-18 09:28:46

+0

我的不好,抱歉。下次我會記住它。 – 2012-07-18 12:00:29

回答

1

你永遠不會分配任何東西給你的tv變量。

假設你要引用的TextView在XML文件中,你必須給它一個id:

android:id="@+id/welcomeText" 

,然後將其分配給您的tv變量:

tv = (TextView) findViewById(R.id.welcomeText); 
+0

啊。基本錯誤。我的錯。我正在瀏覽所有解析代碼,認爲錯誤在那裏。 – 2012-07-18 12:00:18

+0

這是問題還是還有其他問題? – 2012-07-18 12:06:59

+0

這就是問題,其他的東西都可以正常工作,但是現在我試圖訪問我的好友列表並且它顯示「沒有朋友的價值」 我會弄明白的。 – 2012-07-18 12:15:00

相關問題