回调无法解析为变量

时间:2014-11-28 10:29:41

标签: java android facebook

我一直在尝试在我的Android应用中添加一个像facebook一样的按钮。 我跟踪了facebook开发者网站上的所有内容,包括从安装facebook-sdk到关注他们的代码。 在做任何事情我现在在我的应用程序中发现错误,我无法通过。 我搜索了许多资源以寻找解决方案但却永远无法获得解决方案。

这就是我实现它的方式。 下面的代码代表我的MainActivity.java

import com.facebook.UiLifecycleHelper;
import com.facebook.widget.LikeView;

public class MainActivity extends Activity {
  private UiLifecycleHelper uiHelper;

  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    uiHelper = new UiLifecycleHelper(this, callback);

    LikeView likeView = (LikeView) findViewById(R.id.like_view);
    likeView.setObjectId("https://www.facebook.com/NewsNrnDotCom");
  .
  .
  .

  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    uiHelper.onActivityResult(requestCode, resultCode, data, null);
 }
}

文件activity_main.xml的代码是

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <LikeView
        android:id="@+id/like_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" /> 

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:contentDescription="@string/logo"
        android:padding="10dp"
        android:src="@drawable/nrnlogo" />
</LinearLayout>
</LinearLayout>

一切都很好,但代码

  uiHelper = new UiLifecycleHelper(this, callback);

有一条错误消息说:

"callback cannot be resolved to a variable"

我无法找到我在哪里犯错误。 我在这里只添加了一些相关的代码,以防止看起来笨重。 如果需要,我可以添加更多代码。

2 个答案:

答案 0 :(得分:2)

您必须声明回调的含义。

private Session.StatusCallback callback = new Session.StatusCallback() {
    @Override
    public void call(Session session, SessionState state,
            Exception exception) {
        onSessionStateChange(session, state, exception);
    }
};

但是,正如您的代码所示,它可能会导致其他错误。 请查看this question以避免更多问题。

答案 1 :(得分:0)

我认为您错过了在您的活动中声明Session.StatusCallback

private Session.StatusCallback callback = new Session.StatusCallback() {
    @Override
    public void call(Session session, SessionState state, Exception exception) {
        onSessionStateChange(session, state, exception);
    }
};