2013-03-09 82 views
0

我正在實現以下簡單功能。 我有一個簡單的按鈕,點擊我可以登錄到Facebook。我正在使用Facebook SDK相同。當我點擊時,按鈕(imageview)的src圖像也會被更新。 到目前爲止,一切正常。但是,當我在同一按鈕上單擊註銷 我得到一個在Android應用程序中爲Facebook註銷功能

android.os.networkonmainthreadexception 

例外。 任何人都可以請幫我解決這個問題嗎?

編輯: 我的代碼如下:

public void onClick(View v) { 
    // TODO Auto-generated method stub 

    switch(v.getId()){ 
    case R.id.fb_button: 

     try{ 
     if(fb.isSessionValid()) 
     { 
      try { 
       fb.logout(getBaseContext()); 
       update_fb_buttonimage(); 
      } catch (MalformedURLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      //button close session 
     } 

     else 
     { 
      fb.authorize(LoginPage.this, new DialogListener(){ 

       @Override 
       public void onFacebookError(FacebookError e) 
       { 
        Toast.makeText(LoginPage.this, "on Facebook error", Toast.LENGTH_SHORT).show(); 
       } 
       @Override 
       public void onError(DialogError e) 
       { 
        Toast.makeText(LoginPage.this, "on error", Toast.LENGTH_SHORT).show(); 
       } 
       @Override 
       public void onComplete(Bundle values) 
       { 
        update_fb_buttonimage(); 

        Toast.makeText(getBaseContext(), "onComplete works",Toast.LENGTH_LONG).show(); 
       } 
       @Override 
       public void onCancel() 
       { 

       } 
      }); 
      //login in to facebook 
     } 

     }catch(Exception e){ 

      Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG).show(); 

     } 

三江源!

+0

運行你的代碼我知道這一點,但你能提供一個很好的解釋,爲什麼這個錯誤發生在簡單的話?所以像我這樣的初學者可以理解。我相信使用本網站的人的智慧和樂於助人! – user2056245 2013-03-09 08:29:17

回答

2

這裏的問題很簡單,你需要在一個單獨的線程上調用Web服務調用(或者你所擁有的)。所以,很簡單,您需要研究如何使用Android進行線程化。不幸的是,這可能有點痛苦,因爲你需要在一個單獨的線程上進行服務調用,但是你需要更新主線程上的UI。通常這需要在線程之間傳遞數據,這涉及到處理程序或其他複雜性。幸運的是,Android平臺提供了異步任務來處理這個問題,這可以減輕一些複雜性,並且可以幫助您避免代碼中的混亂。

+0

非常感謝!你可以提供一個小教程或例子 – user2056245 2013-03-09 08:55:55

+0

如果你可以在問題中發佈你的代碼 – 2013-03-09 08:58:17

+0

hello sir,我已經在EDITS中添加了我的代碼,這將是很好的。 我可以登錄到Facebook,但我無法註銷。有人建議我使用AsyncTask來達到你的目的,同時我也閱讀過它。你能幫我完成這個任務嗎? – user2056245 2013-03-09 11:17:12

1

當應用程序嘗試在其主線程上執行聯網操作時,會引發此異常。在AsyncTask

+0

一個例子將不勝感激!或一個小教程(而不是開發人員網站之一) – user2056245 2013-03-09 08:56:48

+0

你已經接受@AnandYyas的答案 – DjHacktorReborn 2013-03-09 08:57:53

相關問題