我需要從父活動更新一個片段,但我仍然得到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)
表現出更多的代碼,其中從'WelcomeActivity'類 –
最簡單的方法是使setLoginFailed()方法靜態 – Sjd
@ρяσѕρєяKIM調用'setLoginFailed()'從socketIO方法。也許這會改變事情?這也有所不同:即時通訊從子片段調用'showLoginFragment()',以便它可以被LoginFragment替換? –