我一直在尝试在我的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"
我无法找到我在哪里犯错误。 我在这里只添加了一些相关的代码,以防止看起来笨重。 如果需要,我可以添加更多代码。
答案 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);
}
};