2014-01-16 38 views
0

大家好我有這個代碼的麻煩,我設置了一切,但當我在模擬器或我的設備中調用應用程序時,我得到這個錯誤。mSimpleFacebook.login(mOnLoginListener); null指針執行

我需要一個登錄Facebook併發布提要的活動正​​如你可以看到我使用SimpleFacebook作爲庫,代碼以正確的方式工作。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_story_post); 
    initUI(); 
    // test local language 
      Utils.updateLanguage(getApplicationContext(), "es"); 
      Utils.printHashKey(getApplicationContext()); 
      SimpleFacebook.setConfiguration(configuration); 

      execute(); 

      } 

public void execute() { 

// Login listener 
final OnLoginListener mOnLoginListener = new OnLoginListener() 
{ 

    @Override 
    public void onFail(String reason) 
    { 
     mTextStatus.setText(reason); 
     Log.w(TAG, "Failed to login"); 
    } 

    @Override 
    public void onException(Throwable throwable) 
    { 
     mTextStatus.setText("Exception: " + throwable.getMessage()); 
     Log.e(TAG, "Bad thing happened", throwable); 
    } 

    @Override 
    public void onThinking() 
    { 
     // show progress bar or something to the user while login is happening 
     mTextStatus.setText("Thinking..."); 
    } 

    @Override 
    public void onLogin() 
    { 
     // change the state of the button or do whatever you want 
     mTextStatus.setText("Logged in"); 
     loggedInUIState(); 
     toast("You are logged in"); 
    } 

    @Override 
    public void onNotAcceptingPermissions() 
    { 
     toast("You didn't accept read permissions"); 
    } 

}; 

// listener for publishing action 
final OnPublishListener onPublishListener = new SimpleFacebook.OnPublishListener() 
{ 

    @Override 
    public void onFail(String reason) 
    { 
     hideDialog(); 
     // insure that you are logged in before publishing 
     Log.w(TAG, "Failed to publish"); 
    } 

    @Override 
    public void onException(Throwable throwable) 
    { 
     hideDialog(); 
     Log.e(TAG, "Bad thing happened", throwable); 
    } 

    @Override 
    public void onThinking() 
    { 
     // show progress bar or something to the user while publishing 
     showDialog(); 
    } 

    @Override 
    public void onComplete(String postId) 
    { 
     hideDialog(); 
     toast("Published successfully. The new post id = " + postId); 
    } 
}; 

// feed builder 
final Feed feed = new Feed.Builder() 
    .setMessage("Probando 123 from android") 
    .setName("Facebook SDK") 
    .setCaption("Mi opinión.") 
    .setDescription("Buscate") 
    .setPicture("http://mydomain.com/a.jpg") 
    .setLink("http://google.es") 
    .build(); 

    mSimpleFacebook.login(mOnLoginListener); 
    mSimpleFacebook.publish(feed, onPublishListener); 
} 

登錄貓

01-16 23:01:14.310: E/AndroidRuntime(10601): FATAL EXCEPTION: main 
01-16 23:01:14.310: E/AndroidRuntime(10601): java.lang.RuntimeException: Unable to start activity ComponentInfo{sample.faebook.testing/sample.faebook.testing.StoryPost}: java.lang.NullPointerException 
01-16 23:01:14.310: E/AndroidRuntime(10601): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1970) 
01-16 23:01:14.310: E/AndroidRuntime(10601): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995) 
01-16 23:01:14.310: E/AndroidRuntime(10601): at android.app.ActivityThread.access$600(ActivityThread.java:128) 
01-16 23:01:14.310: E/AndroidRuntime(10601): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161) 
01-16 23:01:14.310: E/AndroidRuntime(10601): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-16 23:01:14.310: E/AndroidRuntime(10601): at android.os.Looper.loop(Looper.java:137) 
01-16 23:01:14.310: E/AndroidRuntime(10601): at android.app.ActivityThread.main(ActivityThread.java:4517) 
01-16 23:01:14.310: E/AndroidRuntime(10601): at java.lang.reflect.Method.invokeNative(Native Method) 
01-16 23:01:14.310: E/AndroidRuntime(10601): at java.lang.reflect.Method.invoke(Method.java:511) 
01-16 23:01:14.310: E/AndroidRuntime(10601): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993) 
01-16 23:01:14.310: E/AndroidRuntime(10601): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760) 
01-16 23:01:14.310: E/AndroidRuntime(10601): at dalvik.system.NativeStart.main(Native Method) 
01-16 23:01:14.310: E/AndroidRuntime(10601): Caused by: java.lang.NullPointerException 
01-16 23:01:14.310: E/AndroidRuntime(10601): at sample.faebook.testing.StoryPost.execute(StoryPost.java:170) 
01-16 23:01:14.310: E/AndroidRuntime(10601): at sample.faebook.testing.StoryPost.onCreate(StoryPost.java:64) 
01-16 23:01:14.310: E/AndroidRuntime(10601): at android.app.Activity.performCreate(Activity.java:4533) 
01-16 23:01:14.310: E/AndroidRuntime(10601): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053) 
01-16 23:01:14.310: E/AndroidRuntime(10601): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934) 
01-16 23:01:14.310: E/AndroidRuntime(10601): ... 11 more 

這是線64 - > mSimpleFacebook.login(mOnLoginListener);

+1

「mSimpleFacebook」在哪裏實例化? – Emmanuel

+0

@Override \t保護無效的onResume() \t { \t \t super.onResume(); \t \t mSimpleFacebook = SimpleFacebook.getInstance(this); \t} – David

+0

在這裏onResume – David

回答

2

mSimpleFacebooknull因爲你試圖在onCreate()使用它,但你在onResume()初始化。

+0

OMG我覺得白癡,我是Java新手,但這是一個很大的失敗,真的謝謝Emmanuel :-) – David

+0

沒問題。樂意效勞。 – Emmanuel