2011-07-11 182 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