2013-07-19 219 views
0

我刚刚学会了如何使用facebook sdk的全部内容,并将其放在我的代码中,但是当我在模拟器中运行应用程序时,应用程序启动,我登录然后启动主要活动,这一切都没问题,但是当我开始第二个活动时,应用程序因某种原因崩溃,我希望你能帮助我。java.lang.NullPointerException android模拟器

的MainAcivity:

package whao.whaoapps.kisscounter; 

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

import com.facebook.*; 
import com.facebook.model.*; 

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    Session.openActiveSession(this, true, new Session.StatusCallback(){ 

     public void call(Session session, SessionState state, Exception exception){ 
      if (session.isOpened()){ 

       Request.executeMeRequestAsync(session, new Request.GraphUserCallback(){ 

        public void onCompleted(GraphUser user, Response response){ 
         if (user!=null){ 
          TextView welcome= (TextView)findViewById(R.id.welcome); 
          welcome.setText("Hello " + user.getName() + "!"); 
         } 
        } 
       }); 
     } 
     } 
    }); 
} 

public void contar(View view) { 
    Intent i = new Intent(this, Contar.class); 
    startActivity(i); 

} 

public void creditos(View view) { 
    Intent i = new Intent(this, Creditos.class); 
    startActivity(i); 

} 


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

} 

} 

的logcat的错误:

07-19 05:57:06.251: E/AndroidRuntime(790): FATAL EXCEPTION: main 
07-19 05:57:06.251: E/AndroidRuntime(790): java.lang.NullPointerException 
07-19 05:57:06.251: E/AndroidRuntime(790): at whao.whaoapps.kisscounter.MainActivity$1$1.onCompleted(MainActivity.java:31) 
07-19 05:57:06.251: E/AndroidRuntime(790): at com.facebook.Request$1.onCompleted(Request.java:264) 
07-19 05:57:06.251: E/AndroidRuntime(790): at com.facebook.Request$4.run(Request.java:1240) 
07-19 05:57:06.251: E/AndroidRuntime(790): at android.os.Handler.handleCallback(Handler.java:725) 
07-19 05:57:06.251: E/AndroidRuntime(790): at android.os.Handler.dispatchMessage(Handler.java:92) 
07-19 05:57:06.251: E/AndroidRuntime(790): at android.os.Looper.loop(Looper.java:137) 
07-19 05:57:06.251: E/AndroidRuntime(790): at android.app.ActivityThread.main(ActivityThread.java:5039) 
07-19 05:57:06.251: E/AndroidRuntime(790): at java.lang.reflect.Method.invokeNative(Native Method) 
07-19 05:57:06.251: E/AndroidRuntime(790): at java.lang.reflect.Method.invoke(Method.java:511) 
07-19 05:57:06.251: E/AndroidRuntime(790): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
07-19 05:57:06.251: E/AndroidRuntime(790): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
07-19 05:57:06.251: E/AndroidRuntime(790): at dalvik.system.NativeStart.main(Native Method) 

Android清单:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="whao.whaoapps.kisscounter" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="17" /> 
<uses-permission android:name="android.permission.INTERNET"/> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="whao.whaoapps.kisscounter.MainActivity" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.NoTitleBar" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="Contar" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar"></activity> 

    <activity android:name="Creditos" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar"></activity> 
    <activity android:name="Resultado" 
     android:screenOrientation="portrait" 
     android:theme="@android:style/Theme.Black.NoTitleBar"></activity> 
    <meta-data android:value="@string/app_id" android:name="com.facebook.sdk.ApplicationId"/> 
    <activity android:name="com.facebook.LoginActivity"></activity> 
</application> 

</manifest> 
+0

textview welcome或GraphUser用户为空。调试和检查 –

+0

只是一个想法:是否有可能您的TextView没有设置id(在layout.xml中)? –

回答

0

TextView welcome为空居多。我认为你应该做2件事(第二个只是一个建议): 1.参考onCreate本身,而不是在onCompleted。 2.在更新TextView的文本时,最好在UIThread中执行(runOnUiThread

+0

我是一个Android开发的初学者,哈哈,你可以更具体一些关于在OnCreate中获得TextView欢迎的参考吗? @Rajeev – Whady

+0

我假设你的'activity_main'布局有一个'TextView',其中id为'welcome'。如果是,那么在'onCreate'中执行'final TextView welcome =(TextView)findViewById(R.id.welcome);'然后在'onCompleted'中设置所需的文本。 – Rajeev

+0

谢谢! :) @Rajeev – Whady