【问题标题】:Cannot be resolved or is not a field facebook无法解决或不是字段facebook
【发布时间】:2015-02-03 01:23:29
【问题描述】:

我的 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>

帮助非常感谢:)

【问题讨论】:

    标签: android facebook


    【解决方案1】:

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

    【讨论】:

    • 解决了 user_name 但仍然存在 update_status 和 post_image 错误,知道吗?
    • 您是否添加了import your.package.name.R; 声明?还是仅将其应用于 user_name?
    • 我导入到项目中
    • 好吧,我已将您的代码添加 import com.test.finalproject.R; 语句复制到 Facebook 活动文件,所有错误都消失了。仔细检查。
    • 我把它放进去,清理了项目,现在我的 R.java 文件被删除了,我有 53 个错误:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    相关资源
    最近更新 更多