2011-04-21 56 views
3

我想現在就學習Java,並且我已經從Android Faceobok API開始深入研究。現在,我試圖從我的圖形數據(本例中爲朋友)獲取一些信息並將其顯示在文本視圖中。這似乎相當微不足道,但它一直是什麼。Java/Android:獲取Facebook用戶信息從圖形Api,在TextView中顯示

JSONObject json_data = null; 

    try 
    { 
     JSONObject response = Util.parseJson(facebook.request("/me/friends", mBundle, "GET")); // Get a friend information from facebook 
     JSONArray jArray = response.getJSONArray("data"); 

     json_data = jArray.getJSONObject(0); 
     String name = json_data.getString("name"); 
     mText.setText(name); 

    } 
    catch (MalformedURLException e) 
    { 
     e.printStackTrace(); 
    } 
    catch (JSONException e) 
    { 
     e.printStackTrace(); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
    catch (FacebookError e) 
    { 
     e.printStackTrace(); 
    } 

當我這樣做時,TextView不會改變,而且我也不完全確定我出錯的地方。

順便說一下,這裏有很好的Android Facebook API教程。大多數是數百行代碼;我沒有精力或耐心去消耗所有這些。

回答

2

你對「微不足道」的斷言本質上是正確的,但總的來說,「跳入深淵」很少導致溺水以外的其他事情。

我將成爲「那個傢伙」,並且建議您在解決別人的API之前,實際上已經掌握了對Java的一般理解和最小能力。一旦你知道Java是如何工作的 - 「PME」......屬性,方法和事件 - 學習任何人的API都只是遵循正確步驟的問題。

除了這一點點的PS,回答下面的問題: 1)從您的來源收到的數據? 2)你在調用什麼線程? 3)任何對象null? 4)當你查看控制檯或日誌時將引發任何異常(將這些異常打印到日誌與當前實現中)?

而不是沒有,但如果你沒有時間或耐心去學習一個API或軟件開發的「怎麼樣和爲什麼」,那麼這將是一個長期的練習,如果工作曾經變得不平凡。

只有一個人的意見誰也曾試圖從消防水管喝。

+0

1)改說這個? 2)「onCreate」 3)Nope 4)否 – Matt 2011-04-21 23:32:46

+0

對溺水也有很好的建議。我從來沒有意識到從C/++ /#移植到Java會很困難,但是有許多語言細微差別對我來說是新的。 – Matt 2011-04-21 23:41:29

+0

1)..你確定服務器實際上向你發回了數據(URL)嗎?通常你必須先登錄。如果你可以這樣做,那麼如果你正在調用正確的調用,那麼你試圖查詢的任何「真實數據」可能只是一個合成錯誤。因此,當你進行認證時會發生什麼?我個人認爲C#和Java非常相似。我早在1997年就開始使用Java,當C#出現後,Sun公司又一次起訴MS,但感到驚訝,但仍有待學習。 – BonanzaDriver 2011-04-22 00:57:17

3

我有一種感覺,你最初的請求沒有正常工作。你應該試試這個行:

JSONObject response = Util.parseJson(facebook.request("me/friends")); 

首先,我覺得在你最初的請求,應該是"me/friends"而非"/me/friends"。其次,你不一定需要mBundle"GET"參數在你想要實現的。你甚至在mBundle中定義了參數嗎?您還從請求方法獲取信息,因此"GET"參數不是必需的。

嘗試我剛寫的這一行,因爲它更簡單,並會得到你的朋友的信息。其餘的代碼很好。

+0

我很感激幫助。我沒有足夠的代表來支持你;抱歉。捆綁的整個概念對我來說是新的,因此我使用了您所建議的方法,並通過一些其他更改設法實現了它。謝謝 – Matt 2011-04-22 02:27:55

+0

+1 ..從馬特 – BonanzaDriver 2011-04-22 05:06:42

0

我可能有點偏離關鍵。但我已經完成了在C#中的Facebook API開發,我想知道你是否有過客戶端登錄。

Facebook與OAuth協同工作,允許您通過它們爲客戶端授權。 (即使你自己的帳戶作爲客戶端),因此你可能需要登錄。

再就是看就是,你有TextView的是在正在顯示的活動..

嘗試把一個斷點,並找了,因爲它執行的代碼,調試視圖是偉大的爲了那個原因。
看看您的回覆是否正在填充。
確保您具有活動中的文本。

mText = (TextView)findViewById(R.id.TextView1); //or whatever you named it. 

另外,logcat的應該表現出你對發生的,也許張貼任何錯誤堆棧跟蹤一些輸出將有助於

2

更新:這是我的所有代碼:

public class FriendsActivity extends Activity { 
    /** Called when the activity is first created. */ 
    Facebook facebook = new Facebook("194653157245506"); 

    TextView mText; 
    Bundle mBundle; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

mText = (TextView) this.findViewById(R.id.text); 

     facebook.authorize(this, new String[] {"offline_access", "user_interests", "friends_interests"}, 

       new DialogListener() { 
      @Override 
      public void onComplete(Bundle values) {} 

      @Override 
      public void onFacebookError(FacebookError error) {} 

      @Override 
      public void onError(DialogError e) {} 

      @Override 
      public void onCancel() {} 
     }); 

     JSONObject json_data = null; 

     try 
     { 
      JSONObject response = Util.parseJson(facebook.request("/me/friends", mBundle, "GET")); // Get a friend information from facebook 
      JSONArray jArray = response.getJSONArray("data"); 

      json_data = jArray.getJSONObject(0); 
      String name = json_data.getString("name"); 
      Log.i("friend is", name); 
      mText.setText(name); 

     } 
     catch (MalformedURLException e) 
     { 
      e.printStackTrace(); 
     } 
     catch (JSONException e) 
     { 
      e.printStackTrace(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
     catch (FacebookError e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     facebook.authorizeCallback(requestCode, resultCode, data); 
    } 
} 
+0

點頭謝謝...你讓我的一天...這解決了我的問題。謝謝.. – Panache 2011-06-16 10:27:13

+0

它給null null pointerexception – Dilip 2013-11-11 05:35:05