【问题标题】:Update fragment from parent activity throws handleCallback error从父活动更新片段会引发 handleCallback 错误
【发布时间】:2015-09-08 19:41:31
【问题描述】:

我需要从父活动更新片段,但我不断收到null pointer exception 并且片段已经在屏幕上。

有人知道我该怎么做吗?

这是我展示片段的方式:

            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();

然后我通过执行以下操作从父活动调用片段方法:

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() 方法设为静态
  • @ρяσѕρєяK 我从 socketIO 方法调用setLoginFailed()。也许这会改变一些事情?这也有区别:我从子片段调用showLoginFragment(),以便可以用 LoginFragment 替换它?

标签: android android-fragments android-fragmentactivity


【解决方案1】:

【讨论】:

  • 你的答案是抛出 NPE - 就像片段没有初始化
  • 你能给我代码吗,我会在你遇到的 NPE 找到它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多