2013-08-18 62 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