无法解决或不是字段facebook

时间:2014-12-04 23:42:31

标签: android facebook

我在Facebook登录代码中收到这些错误。

描述资源路径位置类型 post_image无法解析或者不是字段FBActivity.java / Login / src / com / test / finalproject第63行Java问题 update_status无法解析或者不是字段FBActivity.java / Login / src / com / test / finalproject第72行Java问题 user_name无法解析或不是字段FBActivity.java / Login / src / com / test / finalproject第50行Java问题 fb_login_button无法解析或不是字段FBActivity.java / Login / src / com / test / finalproject第51行Java问题

Facebook活动。

package com.test.finalproject;

import java.util.Arrays;
import java.util.List;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.facebook.Request;
import com.facebook.Response;
import com.facebook.Session;
import com.facebook.SessionState;
import com.facebook.UiLifecycleHelper;
import com.facebook.model.GraphUser;
import com.facebook.widget.LoginButton;
import com.facebook.widget.LoginButton.UserInfoChangedCallback;

public class FBActivity extends FragmentActivity {

private LoginButton loginBtn;
private Button postImageBtn;
private Button updateStatusBtn;

private TextView userName;

private UiLifecycleHelper uiHelper;

private static final List<String> PERMISSIONS = Arrays.asList("publish_actions");

private static String message = "Sample status posted from android app";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    uiHelper = new UiLifecycleHelper(this, statusCallback);
    uiHelper.onCreate(savedInstanceState);

    setContentView(R.layout.activity_fb_login);

    userName = (TextView) findViewById(R.id.user_name);
    loginBtn = (LoginButton) findViewById(R.id.fb_login_button);
    loginBtn.setUserInfoChangedCallback(new UserInfoChangedCallback() {
        @Override
        public void onUserInfoFetched(GraphUser user) {
            if (user != null) {
                userName.setText("Hello, " + user.getName());
            } else {
                userName.setText("You are not logged");
            }
        }
    });

    postImageBtn = (Button) findViewById(R.id.post_image);
    postImageBtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            postImage();
        }
    });

    updateStatusBtn = (Button) findViewById(R.id.update_status);
    updateStatusBtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

        }
    });

    buttonsEnabled(false);
}

private Session.StatusCallback statusCallback = new Session.StatusCallback() {
    @Override
    public void call(Session session, SessionState state,
            Exception exception) {
        if (state.isOpened()) {
            buttonsEnabled(true);
            Log.d("FacebookSampleActivity", "Facebook session opened");
        } else if (state.isClosed()) {
            buttonsEnabled(false);
            Log.d("FacebookSampleActivity", "Facebook session closed");
        }
    }
};

public void buttonsEnabled(boolean isEnabled) {
    postImageBtn.setEnabled(isEnabled);
    updateStatusBtn.setEnabled(isEnabled);
}

public void postImage() {
    if (checkPermissions()) {
        Bitmap img = BitmapFactory.decodeResource(getResources(),
                R.drawable.ic_launcher);
        Request uploadRequest = Request.newUploadPhotoRequest(
                Session.getActiveSession(), img, new Request.Callback() {
                    @Override
                    public void onCompleted(Response response) {
                        Toast.makeText(FBActivity.this,
                                "Photo uploaded successfully",
                                Toast.LENGTH_LONG).show();
                    }
                });
        uploadRequest.executeAsync();
    } else {
        requestPermissions();
    }
}

public void postStatusMessage() {
    if (checkPermissions()) {
        Request request = Request.newStatusUpdateRequest(
                Session.getActiveSession(), message,
                new Request.Callback() {
                    @Override
                    public void onCompleted(Response response) {
                        if (response.getError() == null)
                            Toast.makeText(FBActivity.this,
                                    "Status updated successfully",
                                    Toast.LENGTH_LONG).show();
                    }
                });
        request.executeAsync();
    } else {
        requestPermissions();
    }
}

public boolean checkPermissions() {
    Session s = Session.getActiveSession();
    if (s != null) {
        return s.getPermissions().contains("publish_actions");
    } else
        return false;
}

public void requestPermissions() {
    Session s = Session.getActiveSession();
    if (s != null)
        s.requestNewPublishPermissions(new Session.NewPermissionsRequest(
                this, PERMISSIONS));
}

@Override
public void onResume() {
    super.onResume();
    uiHelper.onResume();
    buttonsEnabled(Session.getActiveSession().isOpened());
}

@Override
public void onPause() {
    super.onPause();
    uiHelper.onPause();
}

@Override
public void onDestroy() {
    super.onDestroy();
    uiHelper.onDestroy();
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    uiHelper.onActivityResult(requestCode, resultCode, data);
}

@Override
public void onSaveInstanceState(Bundle savedState) {
    super.onSaveInstanceState(savedState);
    uiHelper.onSaveInstanceState(savedState);
}

}

我的XML布局。

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

<com.facebook.widget.LoginButton
    android:id="@+id/fb_login_button"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    facebook:confirm_logout="false"
    facebook:fetch_user_info="true" />

<TextView
    android:id="@+id/user_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="10dp"
    android:textSize="18sp" />

<Button
    android:id="@+id/update_status"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/update_status" />

<Button
    android:id="@+id/post_image"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/post_image" />

</LinearLayout>

帮助非常感谢:)

1 个答案:

答案 0 :(得分:0)

R添加导入语句。目前,它可能已解决为android.R,但应该是your.package.name.R。我认为这就是为什么即使用XML声明user_name也无法解析的原因。