Android 在片段内更新Textview时使用空指针

Android 在片段内更新Textview时使用空指针,android,android-fragments,textview,Android,Android Fragments,Textview,我正在编写一个包含两个片段的应用程序。第一个片段向创建这两个片段的活动发送文本信息。那很好用。我的第二个片段与第一个片段同时创建。第二个片段的xml布局中包含一个textview。我的主要活动应该将基于文本的数据传递给第二个片段,并显示文本。问题是当文本到达第二个fragments方法时,textview alwasy返回一个空指针 //这是创建片段的主要方法 试试{ //底部有消息碎片 FragmentManager fM=getFragmentManager; FragmentTransac

我正在编写一个包含两个片段的应用程序。第一个片段向创建这两个片段的活动发送文本信息。那很好用。我的第二个片段与第一个片段同时创建。第二个片段的xml布局中包含一个textview。我的主要活动应该将基于文本的数据传递给第二个片段,并显示文本。问题是当文本到达第二个fragments方法时,textview alwasy返回一个空指针

//这是创建片段的主要方法 试试{ //底部有消息碎片 FragmentManager fM=getFragmentManager; FragmentTransaction fTrans=fM.beginTransaction; messFrag=新的DisplayMessageFragment; fTrans.addR.id.BottomDisplayFragment、messFrag、MESSAGE_FRAGMENT; fTrans.commit; }卡奇{ e、 打印跟踪; } //这就是主要方法调用片段文本视图更新方法的地方 @凌驾 public void getDisplayWindowMessage\u StartFragString消息{ getFragmentManager.findFragmentByTagMESSAGE_片段; messFrag.setMessagemessage; } //这是我的片段类 公共类DisplayMessageFragment扩展了片段{ 文本视图显示消息; 视图; @凌驾 public void onCreateBundle savedInstanceState{ //TODO自动生成的方法存根 super.onCreatesavedInstanceState; } @凌驾 公共视图OnCreateViewLayoutFlater充气机、视图组容器、, 捆绑存储状态{ //TODO自动生成的方法存根 视图=充气机。充气机。布局。显示框架,容器,错误; displayedMessage=TextView view.findViewByIdR.id.MessageDisplay; 返回视图; } public void setMessageString newMessage{ //displayedMessage=TextView view.findViewByIdR.id.MessageDisplay; displayedMessage=TextView getView.findViewByIdR.id.MessageDisplay; displayedMessage.setTextnewMessage; } } 堆栈跟踪:

java.lang.NullPointerException
12-26 02:06:14.505: E/AndroidRuntime(710):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
12-26 02:06:14.505: E/AndroidRuntime(710):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
12-26 02:06:14.505: E/AndroidRuntime(710):  at android.app.ActivityThread.access$600(ActivityThread.java:123)
12-26 02:06:14.505: E/AndroidRuntime(710):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
12-26 02:06:14.505: E/AndroidRuntime(710):  at android.os.Handler.dispatchMessage(Handler.java:99)
12-26 02:06:14.505: E/AndroidRuntime(710):  at android.os.Looper.loop(Looper.java:137)
12-26 02:06:14.505: E/AndroidRuntime(710):  at android.app.ActivityThread.main(ActivityThread.java:4424)
12-26 02:06:14.505: E/AndroidRuntime(710):  at java.lang.reflect.Method.invokeNative(Native Method)
12-26 02:06:14.505: E/AndroidRuntime(710):  at java.lang.reflect.Method.invoke(Method.java:511)
12-26 02:06:14.505: E/AndroidRuntime(710):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-26 02:06:14.505: E/AndroidRuntime(710):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-26 02:06:14.505: E/AndroidRuntime(710):  at dalvik.system.NativeStart.main(Native Method)
12-26 02:06:14.505: E/AndroidRuntime(710): Caused by: java.lang.NullPointerException
12-26 02:06:14.505: E/AndroidRuntime(710):  at .DisplayMessageFragment.setMessage(DisplayMessageFragment.java:38)
12-26 02:06:14.505: E/AndroidRuntime(710):  at .Schduler_Activity.getDisplayWindowMessage_StartFrag(Schduler_Activity.java:79)
12-26 02:06:14.505: E/AndroidRuntime(710):  at 
StartFragment.onCreateView(StartFragment.java:31)
12-26 02:06:14.505: E/AndroidRuntime(710):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:828)
12-26 02:06:14.505: E/AndroidRuntime(710):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1032)
12-26 02:06:14.505: E/AndroidRuntime(710):  at android.app.BackStackRecord.run(BackStackRecord.java:622)
12-26 02:06:14.505: E/AndroidRuntime(710):  at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1382)
12-26 02:06:14.505: E/AndroidRuntime(710):  at android.app.Activity.performStart(Activity.java:4474)
12-26 02:06:14.505: E/AndroidRuntime(710):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1929)
12-26 02:06:14.505: E/AndroidRuntime(710):  ... 11 more

为什么要重新设置displayedMessage变量?您在onCreateView中设置了它,并将其作为类变量,因此在调用serMessage方法时,它应该仍然存在


只要在setMesage方法中删除findViewById,我相信您的NPE就会消失。

我发现了错误。我试图在第一个片段回调期间调用第二个片段,因为片段不能直接通信,所以会抛出NPE

'public void setMessageString newMessage{displayedMessage.setTextnewMessage;}'我已将代码更改为上述代码。我还在接受NPE。我注意到“displayedMessage”总是空的,使用“findViewByID”也会返回空。然后,您应该检查资源id,确保它存在于刚才膨胀的布局中。我发现了错误。我试图在第一个片段回调期间调用第二个片段,因为片段不能直接通信,所以会抛出NPE。