2011-07-11 176 views
1

所以我跟着this tutorial在我已經創建的應用中設置了android facebook sdk。我現在擁有教程中說的所有文件,並且所有內容都沒有顯示錯誤。現在我希望能夠設置我的應用程序,以便當用戶按下應用程序上的按鈕時,它將它們帶到頁面上的Facebook標誌。我試過使用這段代碼,但它不起作用,應用程序崩潰,我在logcat中得到這些錯誤。Android Facebook SDK登錄問題

任何人都可以幫助我得到這個工作?

ImageButton facebook= (ImageButton) findViewById(R.id.facebook); 
     facebook.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       Intent myIntent = new Intent(view.getContext(), FBConnectionActivity.class); 
       startActivityForResult(myIntent, 0); 

      } 
      }); 

這些都是logcat中給我的錯誤:

07-10 22:10:57.510: ERROR/AndroidRuntime(819): FATAL EXCEPTION: main 
07-10 22:10:57.510: ERROR/AndroidRuntime(819): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.outfit.first/com.outfit.first.FBConnectionActivity}: java.lang.InstantiationException: com.outfit.first.FBConnectionActivity 
07-10 22:10:57.510: ERROR/AndroidRuntime(819):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1680) 
07-10 22:10:57.510: ERROR/AndroidRuntime(819):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784) 
07-10 22:10:57.510: ERROR/AndroidRuntime(819):  at android.app.ActivityThread.access$1500(ActivityThread.java:123) 
07-10 22:10:57.510: ERROR/AndroidRuntime(819):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939) 
07-10 22:10:57.510: ERROR/AndroidRuntime(819):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-10 22:10:57.510: ERROR/AndroidRuntime(819):  at android.os.Looper.loop(Looper.java:123) 
07-10 22:10:57.510: ERROR/AndroidRuntime(819):  at android.app.ActivityThread.main(ActivityThread.java:3839) 
07-10 22:10:57.510: ERROR/AndroidRuntime(819):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-10 22:10:57.510: ERROR/AndroidRuntime(819):  at java.lang.reflect.Method.invoke(Method.java:507) 
07-10 22:10:57.510: ERROR/AndroidRuntime(819):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
07-10 22:10:57.510: ERROR/AndroidRuntime(819):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
07-10 22:10:57.510: ERROR/AndroidRuntime(819):  at dalvik.system.NativeStart.main(Native Method) 
07-10 22:10:57.510: ERROR/AndroidRuntime(819): Caused by: java.lang.InstantiationException: com.outfit.first.FBConnectionActivity 
07-10 22:10:57.510: ERROR/AndroidRuntime(819):  at java.lang.Class.newInstanceImpl(Native Method) 
07-10 22:10:57.510: ERROR/AndroidRuntime(819):  at java.lang.Class.newInstance(Class.java:1409) 
07-10 22:10:57.510: ERROR/AndroidRuntime(819):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
07-10 22:10:57.510: ERROR/AndroidRuntime(819):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1672) 

回答

2

不要嘗試使用FBConnectionActivity開始活動,相反在你想要他們登入延長FBConnectionActivity 例如acivity:

public class myActivity extends FBconnectionActivity{....... 

然後在myActivity中的onClickListener(或任何你稱之爲!)中調用setConnection()和getID()方法,這會提示用戶通過Facebook登錄。例如:

ImageButton facebook= (ImageButton) findViewById(R.id.facebook); 
facebook.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View view) { 
     setConnection(); 
     getID(); 
    } 
}); 

請注意,此使用的getId()方法沒有的TextView和一個進度條,它在本教程中,你可以添加以下內容你FBConnectionActivity類:

public void getID() { 
    if (isSession()) { 
     Log.d(TAG, "sessionValid"); 
     mAsyncRunner.request("me", new IDRequestListener()); 
    } else { 
     // no logged in, so relogin 
     Log.d(TAG, "sessionNOTValid, relogin"); 
     mFacebook.authorize(this, PERMS, new LoginDialogListener()); 
    } 
} 
+0

我用代碼和它工作得很好,除非我輸入用戶信息的應用程序崩潰和logcat說這樣的事情。我認爲我需要重新調整應用程序的主要xml,但我認爲還有更多的問題。 '07-12 16:27:22.214:WARN/InputManagerService(148):窗口已經聚焦,忽略焦點增益:[email protected] 07-12 16:27:22.254 :WARN/ViewServer(148):連接錯誤: 07-12 16:27:22.254:WARN/ViewServer(148):java.net.SocketException:損壞的管道' – Peter

+0

嗯奇怪!您是否在登錄後嘗試做其他事情?您可以嘗試將setConnection()方法移至外部&on點擊偵聽器之前,但這應該沒有什麼區別。當你收到的錯誤是由於寫入連接而造成的,而另一端已經關閉它。 – Kenny

+0

我現在就試試。我的代碼太長,不能重新發布的問題,所以我發佈了一個新的問題,所有的代碼在這裏http://stackoverflow.com/questions/6671122/facebook-android-sdk-nullpointerexception。也許有些信息會有所幫助。 – Peter