2014-12-04 90 views
0

我在我的Facebook登录代码中收到这些错误。无法解析或不是字段facebook

描述资源路径位置类型 post_image不能得到解决或无法在现场FBActivity.java /登录/ src目录/ COM /测试/ finalproject线63的Java问题 update_status不能得到解决或无法在现场FBActivity.java /登录/ 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> 

帮助非常感谢:)

回答

0

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

+0

解决了user_name但仍然存在update_status和post_image错误,有什么想法? – JamesCgrave 2014-12-05 00:46:06

+0

您是否添加了'import your.package.name.R;'语句?或仅将其应用于user_name? – 2014-12-05 00:49:54

+0

我将它导入到项目 – JamesCgrave 2014-12-05 00:50:34