2016-05-27 114 views
0

我是一個初學android程序員。我試圖添加一個Facebook登錄頁面到我的android應用程序。我做了一個類,應該顯示登錄頁面.. 但是當行到達setContentView(R.layout.fblogin);程序停止,並沒有在logcat..so沒有錯誤我無法理解與登錄page.Please幫助使用facebook登錄android應用程序(logcat中沒有錯誤)

這裏的問題是我的Facebook登錄活動

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.TextView; 

import com.facebook.CallbackManager; 
import com.facebook.FacebookCallback; 
import com.facebook.FacebookException; 
import com.facebook.FacebookSdk; 
import com.facebook.appevents.AppEventsLogger; 
import com.facebook.login.LoginResult; 
import com.facebook.login.widget.LoginButton; 


public class FbActivity extends Activity{ 
    private CallbackManager callbackManager; 
    private TextView info; 
    private LoginButton loginButton; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    try { 
    setContentView(R.layout.fblogin); 

    info = (TextView)findViewById(R.id.info); 
    loginButton = (LoginButton)findViewById(R.id.login_button); 

FacebookSdk.sdkInitialize(getApplicationContext()); 
// AppEventsLogger.activateApp(this); 
callbackManager = CallbackManager.Factory.create(); 


loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
    @Override 
    public void onSuccess(LoginResult loginResult) { 
     info.setText(
       "User ID: " 
         + loginResult.getAccessToken().getUserId() 
         + "\n" + 
         "Auth Token: " 
         + loginResult.getAccessToken().getToken() 
     ); 
    } 

    @Override 
    public void onCancel() { 
     info.setText("Login attempt canceled."); 
    } 

    @Override 
    public void onError(FacebookException e) { 
     info.setText("Login attempt failed."); 
    } 
}); 

}catch (Exception e) 
    { 
    e.printStackTrace(); 
    } 

    } 


@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
} 


} 

這是我的登陸佈局 - fblogin.xml

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent" 
    android:padding="16dp" 
> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/info" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:textSize="18sp" 
    /> 

<com.facebook.login.widget.LoginButton 
    android:id="@+id/login_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    /> 

這是我的清單文件

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.pioneer.admin.digitalmenu" > 

<uses-sdk 
    android:minSdkVersion="7" 
    android:targetSdkVersion="15" /> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.BLUETOOTH"/> 
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 


<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" 
    > 
    <!-- android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >--> 

    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> 

    <activity 
     android:name="com.pioneer.admin.digitalmenu.LoginPage" 
     android:label="@string/title_activity_main" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name="com.facebook.FacebookActivity" 
     android:configChanges= 
      "keyboard|keyboardHidden|screenLayout|screenSize|orientation" 
     android:theme="@android:style/Theme.Translucent.NoTitleBar" 
     android:label="@string/app_name" /> 

    <provider android:authorities="com.facebook.app.FacebookContentProvider1234" 
     android:name="com.facebook.FacebookContentProvider" 
     android:exported="true" /> 

    <activity 
     android:name="com.pioneer.admin.digitalmenu.MainActivity" 
     android:theme="@style/AppTheme.NoActionBar" 
     android:screenOrientation="landscape"></activity> 
    <activity 
     android:name="com.pioneer.admin.digitalmenu.FbActivity" 
     android:theme="@style/AppTheme.NoActionBar" 
     android:screenOrientation="landscape"></activity> 

    <activity 
     android:name="com.pioneer.admin.digitalmenu.FeedBack" 
     android:theme="@style/AppTheme.NoActionBar"></activity> 


    <activity 
     android:name="com.pioneer.admin.digitalmenu.PrintDialogActivity" 
     android:theme="@style/AppTheme.NoActionBar"></activity> 
</application> 

謝謝..

+1

適當加的Facebook SDK –

回答

2

試試這個代碼:

FacebookSdk.sdkInitialize(getApplicationContext()); put it before  

setContentView(R.layout.fblogin); 
1

你應該初始化FacebookSDKsetContentView之前,按照較新FacebookSDK

改變這一點。

setContentView(R.layout.fblogin); 

info = (TextView)findViewById(R.id.info); 
loginButton = (LoginButton)findViewById(R.id.login_button); 

FacebookSdk.sdkInitialize(getApplicationContext()); 

了這一點。

FacebookSdk.sdkInitialize(getApplicationContext()); 
setContentView(R.layout.fblogin); 

info = (TextView)findViewById(R.id.info); 
loginButton = (LoginButton)findViewById(R.id.login_button); 

而且似乎看到自己onActivityResult沒有super

改變這一點。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
} 

了這一點。

Override它與super

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
    } 
+0

欣賞我的答案,如果它幫助你。 –

相關問題