2013-08-18 60 views
0

我一直在執行Facebook到我的應用程序,但由於某種原因它不斷崩潰。我看不到任何錯誤或者崩潰的原因。該應用的logcat的過大,包括在這裏,因此,繼承人一個鏈接:http://pastebin.com/b8Zbyu0v爲什麼我的應用程序不斷崩潰?

繼承人的源代碼,即時通訊使用:

package com.myCompany.myProject; 

import com.facebook.LoggingBehavior; 
import com.facebook.Request; 
import com.facebook.Session; 
import com.facebook.SessionState; 
import com.facebook.Settings; 
import com.facebook.model.GraphUser; 

import android.R.string; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends Activity { 
    private static final String URL_PREFIX_FRIENDS = "https://graph.facebook.com/me/friends?access_token="; 

    private TextView textInstructionsOrLink; 
    private Button buttonLoginLogout; 
    private Session.StatusCallback statusCallback = new SessionStatusCallback(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     buttonLoginLogout = (Button)findViewById(R.id.buttonLoginLogout); 
     textInstructionsOrLink = (TextView)findViewById(R.id.instructionsOrLink); 

     Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS); 

     Session session = Session.getActiveSession(); 
     if (session == null) { 
      if (savedInstanceState != null) { 
       session = Session.restoreSession(this, null, statusCallback, savedInstanceState); 
      } 
      if (session == null) { 
       session = new Session(this); 
      } 
      Session.setActiveSession(session); 
      if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) { 
       session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback)); 
      } 
     } 

     updateView(); 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 
     Session.getActiveSession().addCallback(statusCallback); 
    } 

    @Override 
    public void onStop() { 
     super.onStop(); 
     Session.getActiveSession().removeCallback(statusCallback); 
    } 

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

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     Session session = Session.getActiveSession(); 
     Session.saveSession(session, outState); 
    } 

    private void updateView() { 
     Session session = Session.getActiveSession(); 
     if (session.isOpened()) { 
      textInstructionsOrLink.setText(URL_PREFIX_FRIENDS + session.getAccessToken()); 
      buttonLoginLogout.setText("Logout"); 
      buttonLoginLogout.setOnClickListener(new OnClickListener() { 
       public void onClick(View view) { onClickLogout(); } 
      }); 
     } else { 
      textInstructionsOrLink.setText("Please login by clicking the button"); 
      buttonLoginLogout.setText("Login"); 
      buttonLoginLogout.setOnClickListener(new OnClickListener() { 
       public void onClick(View view) { onClickLogin(); } 
      }); 
     } 
    } 

    private void onClickLogin() { 
     Session session = Session.getActiveSession(); 
     if (!session.isOpened() && !session.isClosed()) { 
      session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback)); 
     } else { 
      Session.openActiveSession(this, true, statusCallback); 
     } 
    } 

    private void onClickLogout() { 
     Session session = Session.getActiveSession(); 
     if (!session.isClosed()) { 
      session.closeAndClearTokenInformation(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    private class SessionStatusCallback implements Session.StatusCallback { 
     @Override 
     public void call(Session session, SessionState state, Exception exception) { 
      updateView(); 
     } 
    } 

} 

而且繼承人的XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <com.facebook.widget.LoginButton 
     android:id="@+id/authButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:layout_marginTop="30dp" 
     /> 

    <TextView 
     android:id="@+id/instructionsOrLink" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:text="Medium Text" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

</LinearLayout> 

有誰知道它爲什麼會崩潰?

+0

日誌中的字符串說,你的'applicationId'不能爲空。檢查'onCreate()'.MainActivity.onCreate(MainActivity.java:45)line 45 –

+0

但我沒有看到任何地方的重複?任何人都可以看到一個嗎? – Welton122

+0

applicationId不能爲空這是造成重複的原因 – Trikaldarshi

回答

0

你必須定義applicationIdAndroidManifest.xml這樣的:

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

<application android:label="@string/app_name"....標籤

其中app_id是您strings.xml

+0

感謝您的回覆。我已經檢查過清單,這條線已經存在。還有什麼你能想到的嗎? – Welton122