2015-09-08 35 views
1

我需要從父活動更新一個片段,但我仍然得到null pointer exception並且片段已經在屏幕上。從父活動更新片段拋出handleCallback錯誤

有誰知道我該怎麼做?

這裏是我展現片段:

  FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
      ft.setCustomAnimations(R.anim.abc_slide_in_bottom, R.anim.abc_slide_out_top, R.anim.abc_slide_in_top, R.anim.abc_slide_out_bottom); 
      loginFragment = new LoginFragment(); 
      Bundle b = new Bundle(); 
      b.putSerializable(IntentConstants.OPERATORS, supportedCarriers); 
      b.putString(IntentConstants.OPERATOR_NAME, carrierName); 
      b.putBoolean(IntentConstants.OPERATOR_SUPPORTED, carrierIsSupported); 
      loginFragment.setArguments(b); 
      ft.replace(R.id.welcome_fragment_container, loginFragment); 
      ft.commit(); 

和IM做調用從父的活性的片段方法之後:

runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         loginFragment.setLoginFailed(); 
        } 
       }); 

但是,當這樣做,應用程序崩潰,我在logcat中得到這樣的:

java.lang.NullPointerException 
      at com.app.activities.WelcomeActivity$6$1.run(WelcomeActivity.java:285) 
      at android.os.Handler.handleCallback(Handler.java:733) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:146) 
      at android.app.ActivityThread.main(ActivityThread.java:5602) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
      at dalvik.system.NativeStart.main(Native Method) 
+0

表現出更多的代碼,其中從'WelcomeActivity'類 –

+0

最簡單的方法是使setLoginFailed()方法靜態 – Sjd

+0

@ρяσѕρєяKIM調用'setLoginFailed()'從socketIO方法。也許這會改變事情?這也有所不同:即時通訊從子片段調用'showLoginFragment()',以便它可以被LoginFragment替換? –

回答