从Eclipse使用Facebook .jar包时出现导入错误?

4
当我尝试在Eclipse和Unity之间的插件中调用UiLifecycleHelper类时,出现了多个错误。我将facebooksdk.jar复制到项目的libs文件夹中,然后在以下位置添加它:
  • 属性 > Java Build Path > 添加JAR
我还尝试简单地在以下位置添加"library":
  • 属性 > Android,使用按钮Add...
当我不使用UiLifecycleHelper类时没有错误(从testFunc中的Log.i正常工作,不需要UiLifecycleHelper类)。并且在没有与Unity连接的情况下,使用扩展Activity的简单类可以成功连接到Facebook。
我还按其他主题建议将Java编译器设置为1.6。您是否知道如何正确地将Facebook .jar与我的项目连接起来?
以下是日志:
01-05 17:17:53.834: E/dalvikvm(25005): Could not find class 'com.project.aef.MainActivity$1', referenced from method com.project.aef.MainActivity.<init>
01-05 17:17:53.835: E/dalvikvm(25005): Could not find class 'com.facebook.UiLifecycleHelper', referenced from method com.project.aef.MainActivity.onCreate
01-05 17:17:53.841: E/AndroidRuntime(25005): FATAL EXCEPTION: main
01-05 17:17:53.841: E/AndroidRuntime(25005): java.lang.NoClassDefFoundError: com.project.aef.MainActivity$1
01-05 17:17:53.841: E/AndroidRuntime(25005):    at com.project.aef.MainActivity.<init>(MainActivity.java:24)
01-05 17:17:53.841: E/AndroidRuntime(25005):    at java.lang.Class.newInstanceImpl(Native Method)
01-05 17:17:53.841: E/AndroidRuntime(25005):    at java.lang.Class.newInstance(Class.java:1319)
01-05 17:17:53.841: E/AndroidRuntime(25005):    at android.app.Instrumentation.newActivity(Instrumentation.java:1023)

编辑: 我在使用Twitter时也遇到了类似的问题,最终我更改了代码并使用了Activity代替当前代码。我不知道为什么代码在软件外面可以正常工作,在连接时就不行。我还使用了Libgdx制作游戏,而不是Unity。问题解决了。

1个回答

5

您的问题出在startActivity上,您需要正确地设置它。以下是一个示例:

public class MyActivity extends Activity {
 ...

 static final int PICK_CONTACT_REQUEST = 0;

 protected boolean onKeyDown(int keyCode, KeyEvent event) {
     if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
         // When the user center presses, let them pick a contact.
         startActivityForResult(
             new Intent(Intent.ACTION_PICK,
             new Uri("content://contacts")),
             PICK_CONTACT_REQUEST);
        return true;
     }
     return false;
 }

 protected void onActivityResult(int requestCode, int resultCode,
         Intent data) {
     if (requestCode == PICK_CONTACT_REQUEST) {
         if (resultCode == RESULT_OK) {
             // A contact was picked.  Here we will just display it
             // to the user.
             startActivity(new Intent(Intent.ACTION_VIEW, data));
         }
     }
 }
}

正如您所看到的,您的代码缺少“Intent”,这就是为什么出现了错误的原因。


谢谢你的回答,你确定在这个例子中是这样吗?Facebook SDK文件夹中提供了Android示例示例中使用UILifecycleHelper的代码,并且UILifecycleHelper没有扩展Activity - Paul
1
我所提到的是,你的代码缺少“Intent”。否则,错误将仍然存在。正如你可以在这里检查的那样 - 实现Facebook与Android登录也需要“Intent”:https://dev59.com/znHYa4cB1Zd3GeqPP8pE - Tanya Kadam
抱歉,也许我误解了您的意思。您确切地建议在哪里添加Intent呢?是使用“activity.Call("testFunc");”吗?我从此页面底部获取了代码:http://docs.unity3d.com/Documentation/Manual/PluginsForAndroid.html 在该页面中,activity使用“Call”方法被调用。 - Paul
@Paul - 请查看这个教程,开始了解“Intent”:http://www.vogella.com/tutorials/AndroidIntent/article.html。 - Tanya Kadam
@Paul - 这里是关于“Intent”的一些快速信息:(1) https://dev59.com/qWw15IYBdhLWcg3wfb3i; (2) http://stackoverflow.com/questions/6646492/what-is-the-exact-difference-between-intent-and-pending-intent/6646611#6646611,如果你没有时间去完成那个教程和练习的话。 - Tanya Kadam
谢谢Tanya,我看到你在帮助我,我很感激。但是你没有告诉我问题出现在我的代码哪里,所以我很困惑。我在其他应用程序中多次使用了Intents,我知道它在应用程序中的作用。但是对于Facebook,UILifecyleHelper的调用方式不同,并且关于对MainActivity类的调用,它可以在没有UILifecycleHelper的情况下工作。因为这是Unity文档中解释的方法。如果你是正确的,并且指出了正确的问题,你能更具体地向我展示一个例子或需要更改的行吗? - Paul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接