ViewStub Null异常膨胀

时间:2014-07-04 00:00:33

标签: android viewstub

我收到错误

07-04 01:49:56.325: E/AndroidRuntime(9693): java.lang.NullPointerException

在完成交易后尝试在Fragment中膨胀ViewStub

sendMessageView = ((ViewStub) rootView
            .findViewById(R.id.send_message_viewstub)).inflate();

这是XML

<ViewStub
        android:id="@+id/send_message_viewstub"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:inflatedId="@+id/panel_import"
        android:layout="@layout/fragment_send_message" />

2 个答案:

答案 0 :(得分:-1)

如果您始终要在此ViewStub中使用相同的布局,您最好使用include代码投放。

<include layout="@layout/fragment_send_message />

include在运行时替换为指定的布局,并允许您的布局既模块化又可读。

答案 1 :(得分:-1)

同意Shawnic,您向我们展示的错误线并不多见。我可以告诉你,使用片段比活动有点棘手。

但话虽如此,我认为你不能使用片段作为包含的布局? 在您的问题的上下文中片段是什么或究竟在哪里?

片段有自己的类文件,负责扩展要用作片段的布局。

此外,我对您发布的这部分感到担忧:

sendMessageView = ((ViewStub) rootView
        .findViewById(R.id.send_message_viewstub)).inflate();

现在我有这方面的经验,但已经有一段时间了,我不确定你的代码的这一部分是否正确?

这是Android建议您编写它的方式:

 ViewStub stub = (ViewStub) findViewById(R.id.stub);
 View inflated = stub.inflate();

在您的代码中,

是什么类型的对象
sendMessageView 

您可能希望首先将代码更改为此以确保,我们并不确切知道为什么Android建议我们这样做,但我们可能应该这样做。